Android ApiDemos详解之App/Activity/Animation(3)
2011-12-18 11:09
357 查看
Android_ApiDemos详解之App->Activity->Animation
本篇是ApidDemos详解系列文章的第一篇,该系列文章的发布顺序很简单,就是按照ApiDemos中从列表由上至下的顺序,如下所示:
1. App->Activity
2. App->Alarm
3. App->DeviceAdmin
4. App->Dialog
5. App->Intents
6. App->LauncherShortcuts
7. App->Menu
8. App->Notification
9. App->Preferences
10. App->Search
11. App->Service
12. App->Text-To-Speech
13. App->VoiceRecognition
14. Content->Assets
15. Content->Provider
16. Content->Resources
17. Content->Storage
18. Graphics->AlphaBitmap
19. Graphics->AnimateDrawables
20. Graphics->Arcs
21. Graphics->BitmapDecode
22. Graphics->BitmapMesh
23. Graphics->BitmapPixels
24. Graphics->CameraPreview
25. Graphics->Clipping
26. Graphics->ColorFilters
27. Graphics->ColorMatrix
28. Graphics->Compass
29. Graphics->CreateBitmap
30. Graphics->Density
31. Graphics->Drawable
32. Graphics->FingerPaint
33. Graphics->Layers
34. Graphics->MeasureText
35. Graphics->OpenGLES
36. Graphics->PathEffects
37. Graphics->PathFillTypes
38. Graphics->Patterns
39. Graphics->Pictures
40. Graphics->Points
41. Graphics->PolyToPoly
42. Graphics->PurgeableBitmap
43. Graphics->Regions
44. Graphics->RoundRects
45. Graphics->ScaleToFit
46. Graphics->ScaleToTest
47. Graphics->SurfaceWindow
48. Graphics->SurfaceViewOverlay
49. Graphics->Sweep
50. Graphics->TextAlign
51. Graphics->TouchPaint
52. Graphics->Typefaces
53. Graphics->UnicodeChart
54. Graphics->Vertices
55. Graphics->Xfermodes
56. Media->AudioFx
57. Media->MediaPlayer
58. Media->VideoView
59. NFC->ForegroundDispatch
60. NFC->ForegroundNdefPush
61. NFC->TechFilter
62. OS->MorseCode
63. OS->RotationVector
64. OS->Sensors
65. OS->SMSMessaging
66. Text->Linkify
67. Text->LogTextBox
68. Text->Marquee
69. Views->Animation
70. Views->AutoComplete
71. Views->Buttons
72. Views->Chronometer
73. Views->Controls
74. Views->Custom
75. Views->DateWidgets
76. Views->ExpandableLists
77. Views->Focus
78. Views->Gallery
79. Views->Grid
80. Views->ImageButton
81. Views->ImageSwitcher
82. Views->ImageView
83. Views->LayoutAnimation
84. Views->Layouts
85. Views->Lists
86. Views->ProgressBar
87. Views->RadioGroup
88. Views->ScrollBars
89. Views->SecureView
90. Views->SeekBar
91. Views->Spinner
92. Views->Tabs
93. Views->TextSwitcher
94. Views->Visibility
95. Views->WebView
今天首先从App->Activity开始,其中包括Animation , Custom Dialog , Custom Title , Dialog , Forwarding ,HelloWorld , Persistent State , QuickContactsDemo , Receive Result ,Redirection ,Reorder Activites
, Save & Restore State , ScreenOrientation , SetWallpaper , Translucent , Translucent Blur ,Wallpaper.
第一篇为大家讲解
(1)App->Activity->Animation
这个Demo很简单,讲的就是两个Activity在跳转过程中的动画应用。如下图所示有两种变换效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/9be1a220571ebf63eca064d14609e869.gif)
Fade in按钮和Zoom in按钮分别通过不同的动画效果,实现了从Animation跳转至Controls1(Animation与Controls1均为继承自Activity)。跳转后的Activty界面如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/40695f3b12def417253f7c3be522297a.gif)
首先来看一下Animation中的主要代码:
代码很简单,两个Button分别点击,分别进行相对应的跳转,首先来看第一个id是R.id.fade_animation的Button,该Button注册的监听器为自定义的mFadeListener,实现如下:
第二个Button注册的监听器同样为自定义的mZoomListener,实现如下:
startActivity(new Intent(Animation.this, Controls1.class));这一句相信大家都比较熟悉,实现的是两个Activity之间的跳转。而overridePendingTransition(R.anim.fade,R.anim.hold);需要稍微着重讲一下,该函数实现的是Activity切换时的动画,第一个参数为int型,是第一个Activity退出时的动画资源id;第二个参数同样也为int型,是第二个Activity进入时的动画资源id。
其中anim目录下的fade.xml主要代码如下所示:
hold.xml主要代码如下:
zoom_enter.xml主要代码如下:
zoom_exit.xml主要代码如下:
下面是关于Android中Animation的介绍:
关于interpolator的解释
interpolator定义一个动画的变化率(the rate of change)。这使得基本的动画效果(alpha, scale,
translate,rotate)得以加速,减速,重复等,例如在该例中的四个xml动画文件中均使用了动画插入器。
Interpolator 定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等。Interpolator是基类,封装了所有
Interpolator 的共同方法,它只有一个方法,即 getInterpolation (floatinput),该方法maps a point onthe timeline to a multiplier to be applied to thetransformations of ananimation。Android提供了几个
Interpolator 子类,实现了不同的速度曲线,如下:
好,本篇文章到此结束,明天继续第二篇App->Activity->Custom Dialog
本篇是ApidDemos详解系列文章的第一篇,该系列文章的发布顺序很简单,就是按照ApiDemos中从列表由上至下的顺序,如下所示:
1. App->Activity
2. App->Alarm
3. App->DeviceAdmin
4. App->Dialog
5. App->Intents
6. App->LauncherShortcuts
7. App->Menu
8. App->Notification
9. App->Preferences
10. App->Search
11. App->Service
12. App->Text-To-Speech
13. App->VoiceRecognition
14. Content->Assets
15. Content->Provider
16. Content->Resources
17. Content->Storage
18. Graphics->AlphaBitmap
19. Graphics->AnimateDrawables
20. Graphics->Arcs
21. Graphics->BitmapDecode
22. Graphics->BitmapMesh
23. Graphics->BitmapPixels
24. Graphics->CameraPreview
25. Graphics->Clipping
26. Graphics->ColorFilters
27. Graphics->ColorMatrix
28. Graphics->Compass
29. Graphics->CreateBitmap
30. Graphics->Density
31. Graphics->Drawable
32. Graphics->FingerPaint
33. Graphics->Layers
34. Graphics->MeasureText
35. Graphics->OpenGLES
36. Graphics->PathEffects
37. Graphics->PathFillTypes
38. Graphics->Patterns
39. Graphics->Pictures
40. Graphics->Points
41. Graphics->PolyToPoly
42. Graphics->PurgeableBitmap
43. Graphics->Regions
44. Graphics->RoundRects
45. Graphics->ScaleToFit
46. Graphics->ScaleToTest
47. Graphics->SurfaceWindow
48. Graphics->SurfaceViewOverlay
49. Graphics->Sweep
50. Graphics->TextAlign
51. Graphics->TouchPaint
52. Graphics->Typefaces
53. Graphics->UnicodeChart
54. Graphics->Vertices
55. Graphics->Xfermodes
56. Media->AudioFx
57. Media->MediaPlayer
58. Media->VideoView
59. NFC->ForegroundDispatch
60. NFC->ForegroundNdefPush
61. NFC->TechFilter
62. OS->MorseCode
63. OS->RotationVector
64. OS->Sensors
65. OS->SMSMessaging
66. Text->Linkify
67. Text->LogTextBox
68. Text->Marquee
69. Views->Animation
70. Views->AutoComplete
71. Views->Buttons
72. Views->Chronometer
73. Views->Controls
74. Views->Custom
75. Views->DateWidgets
76. Views->ExpandableLists
77. Views->Focus
78. Views->Gallery
79. Views->Grid
80. Views->ImageButton
81. Views->ImageSwitcher
82. Views->ImageView
83. Views->LayoutAnimation
84. Views->Layouts
85. Views->Lists
86. Views->ProgressBar
87. Views->RadioGroup
88. Views->ScrollBars
89. Views->SecureView
90. Views->SeekBar
91. Views->Spinner
92. Views->Tabs
93. Views->TextSwitcher
94. Views->Visibility
95. Views->WebView
今天首先从App->Activity开始,其中包括Animation , Custom Dialog , Custom Title , Dialog , Forwarding ,HelloWorld , Persistent State , QuickContactsDemo , Receive Result ,Redirection ,Reorder Activites
, Save & Restore State , ScreenOrientation , SetWallpaper , Translucent , Translucent Blur ,Wallpaper.
第一篇为大家讲解
(1)App->Activity->Animation
这个Demo很简单,讲的就是两个Activity在跳转过程中的动画应用。如下图所示有两种变换效果:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/9be1a220571ebf63eca064d14609e869.gif)
Fade in按钮和Zoom in按钮分别通过不同的动画效果,实现了从Animation跳转至Controls1(Animation与Controls1均为继承自Activity)。跳转后的Activty界面如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202002/13/40695f3b12def417253f7c3be522297a.gif)
首先来看一下Animation中的主要代码:
protected voidonCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animation); // Watch for button clicks. Button button = (Button)findViewById(R.id.fade_animation); button.setOnClickListener(mFadeListener); button = (Button)findViewById(R.id.zoom_animation); button.setOnClickListener(mZoomListener); }
代码很简单,两个Button分别点击,分别进行相对应的跳转,首先来看第一个id是R.id.fade_animation的Button,该Button注册的监听器为自定义的mFadeListener,实现如下:
privateOnClickListener mFadeListener = new OnClickListener() { public void onClick(View v) { // Request the next activitytransition (here starting a new one). startActivity(newIntent(Animation.this, Controls1.class)); // Supply a custom animation.This one will just fade the new // activity on top. Notethat we need to also supply an animation // (here just doing nothingfor the same amount of time) for the // old activity to preventit from going away too soon. overridePendingTransition(R.anim.fade,R.anim.hold); } }
第二个Button注册的监听器同样为自定义的mZoomListener,实现如下:
privateOnClickListener mZoomListener = new OnClickListener() { public void onClick(View v) { // Request the next activitytransition (here starting a new one). startActivity(newIntent(Animation.this, Controls1.class)); // This is a morecomplicated animation, involving transformations // on both this (exit) andthe new (enter) activity. Note how for // the duration of theanimation we force the exiting activity // to be Z-ordered on top(even though it really isn't) to achieve // the effect we want. overridePendingTransition(R.anim.zoom_enter,R.anim.zoom_exit); } }
startActivity(new Intent(Animation.this, Controls1.class));这一句相信大家都比较熟悉,实现的是两个Activity之间的跳转。而overridePendingTransition(R.anim.fade,R.anim.hold);需要稍微着重讲一下,该函数实现的是Activity切换时的动画,第一个参数为int型,是第一个Activity退出时的动画资源id;第二个参数同样也为int型,是第二个Activity进入时的动画资源id。
其中anim目录下的fade.xml主要代码如下所示:
<alphaxmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromAlpha="0.0"android:toAlpha="1.0" android:duration="@android:integer/config_longAnimTime" />
hold.xml主要代码如下:
<translatexmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromXDelta="0"android:toXDelta="0" android:duration="@android:integer/config_longAnimTime" />
zoom_enter.xml主要代码如下:
<setxmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator"> <scaleandroid:fromXScale="2.0" android:toXScale="1.0" android:fromYScale="2.0" android:toYScale="1.0" android:pivotX="50%p"android:pivotY="50%p" android:duration="@android:integer/config_mediumAnimTime"/> </set>
zoom_exit.xml主要代码如下:
<setxmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator" android:zAdjustment="top"> <scaleandroid:fromXScale="1.0" android:toXScale=".5" android:fromYScale="1.0"android:toYScale=".5" android:pivotX="50%p"android:pivotY="50%p" android:duration="@android:integer/config_mediumAnimTime"/> <alpha android:fromAlpha="1.0"android:toAlpha="0" android:duration="@android:integer/config_mediumAnimTime"/> </set>
下面是关于Android中Animation的介绍:
表一 | ||
XML节点 | 功能说明 | |
alpha | 渐变透明度动画效果 | |
<alpha android:fromAlpha=”0.1″ android:toAlpha=”1.0″ android:duration=”3000″ /> | ||
fromAlpha | 属性为动画起始时透明度 | 0.0表示完全透明 1.0表示完全不透明 以上值取0.0-1.0之间的float数据类型的数字 duration为动画持续时间,ms单位 |
toAlpha | 属性为动画结束时透明度 |
表二 | ||
scale | 渐变尺寸伸缩动画效果 | |
<scale android:interpolator= “@android:anim/accelerate_decelerate_interpolator” android:fromXScale=”0.0″ android:toXScale=”1.4″ android:fromYScale=”0.0″ android:toYScale=”1.4″ android:pivotX=”50%” android:pivotY=”50%” android:fillAfter=”false” android:startOffset=“700” android:duration=”700″ android:repeatCount=”10″ /> | ||
fromXScale[float] fromYScale[float] | 为动画起始时,X、Y坐标上的伸缩尺寸 | 0.0表示收缩到没有 1.0表示正常无伸缩 值小于1.0表示收缩 值大于1.0表示放大 |
toXScale [float] toYScale[float] | 为动画结束时,X、Y坐标上的伸缩尺寸 | |
pivotX[float] pivotY[float] | 为动画相对于物件的X、Y坐标的开始位置 | 属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置 |
表三 | |
translate | 画面转换位置移动动画效果 |
<translate android:fromXDelta=”30″ android:toXDelta=”-80″ android:fromYDelta=”30″ android:toYDelta=”300″ android:duration=”2000″ /> | |
fromXDelta toXDelta | 为动画、结束起始时 X坐标上的位置 |
fromYDelta toYDelta | 为动画、结束起始时 Y坐标上的位置 |
表四 | ||
rotate | 画面转移旋转动画效果 | |
<rotate android:interpolator=”@android:anim/accelerate_decelerate_interpolator” android:fromDegrees=”0″ android:toDegrees=”+350″ android:pivotX=”50%” android:pivotY=”50%” android:duration=”3000″ /> | ||
fromDegrees | 为动画起始时物件的角度 | 说明 当角度为负数——表示逆时针旋转 当角度为正数——表示顺时针旋转 (负数from——to正数:顺时针旋转) (负数from——to负数:逆时针旋转) (正数from——to正数:顺时针旋转) (正数from——to负数:逆时针旋转) |
toDegrees | 属性为动画结束时物件旋转的角度 可以大于360度 | |
pivotX pivotY | 为动画相对于物件的X、Y坐标的开始位 | 说明:以上两个属性值 从0%-100%中取值 50%为物件的X或Y方向坐标上的中点位置 |
interpolator定义一个动画的变化率(the rate of change)。这使得基本的动画效果(alpha, scale,
translate,rotate)得以加速,减速,重复等,例如在该例中的四个xml动画文件中均使用了动画插入器。
Interpolator 定义了动画的变化速度,可以实现匀速、正加速、负加速、无规则变加速等。Interpolator是基类,封装了所有
Interpolator 的共同方法,它只有一个方法,即 getInterpolation (floatinput),该方法maps a point onthe timeline to a multiplier to be applied to thetransformations of ananimation。Android提供了几个
Interpolator 子类,实现了不同的速度曲线,如下:
AccelerateDecelerateInterpolator | 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速 |
AccelerateInterpolator | 在动画开始的地方速率改变比较慢,然后开始加速 |
CycleInterpolator | 动画循环播放特定的次数,速率改变沿着正弦曲线 |
DecelerateInterpolator | 在动画开始的地方速率改变比较慢,然后开始减速 |
LinearInterpolator | 在动画的以均匀的速率改变 |
相关文章推荐
- Android ApiDemos详解之App/Activity/Animation(3)
- Android ApiDemos详解之App_Activity_Intents(8)
- Android ApiDemos示例解析(3): App->Activity->Animation
- Android ApiDemos详解之App/Activity/Custom Title(1)
- Android ApiDemos详解之App->Activity->Custom Title
- Android ApiDemos详解之App/Activity/Custom Dialog(2)
- Android ApiDemos详解之App_Activity_IntentActivityFlags(7)
- Android ApiDemos详解之App/Activity/Custom Title(1)
- Android ApiDemos详解之App/Activity/Dialog(4)
- Android ApiDemos详解之App/Activity/Custom Dialog(2)
- Android ApiDemos示例解析(3): App->Activity->Animation
- Android ApiDemos详解之App/Activity/Forwarding(5)
- Android ApiDemos详解之App_Activity_Persistent State(9)
- Android ApiDemos详解之App_Activity_Hello World(6)
- Android ApiDemos示例解析(10):App->Activity->QuickContactsDemo
- Android ApiDemos示例解析(4):App->Activity->Custom Dialog
- Android ApiDemos示例解析(12):App->Activity->Redirection
- [Android Samples视频系列之ApiDemos] App-Activity-Finish Affinity
- [Android Samples视频系列之ApiDemos]App-Activity-Forwarding
- [Android Samples视频系列之ApiDemos] App-Activity-SetWallpaper