(转)android四种动画
動畫類型
Android的animation由四種類型組成
XML中
alpha ??? 漸變透明度動畫效果
scale ??? 漸變尺寸伸縮動畫效果
translate ??? 畫面轉換位置移動動畫效果
rotate ??? 畫面轉移旋轉動畫效果
JavaCode中
AlphaAnimation ??? 漸變透明度動畫效果
ScaleAnimation ??? 漸變尺寸伸縮動畫效果
TranslateAnimation ??? 畫面轉換位置移動動畫效果
RotateAnimation ??? 畫面轉移旋轉動畫效果
Android動畫模式
Animation主要有兩種動畫模式:
一種是tweened animation(漸變動畫)
XML中 ??? JavaCode
alpha ??? AlphaAnimation
scale ??? ScaleAnimation
一種是frame by frame(畫面轉換動畫)
XML中 ??? JavaCode
translate ??? TranslateAnimation
rotate ??? RotateAnimation
如何在XML文件中定義動畫
① 打開Eclipse,新建Android工程
② 在res目錄中新建anim文件夾
③ 在anim目錄中新建一個myanim.xml(注意文件名小寫)
④ 加入XML的動畫代碼
1. <?xml version="1.0" encoding="utf-8"?>
2. <set xmlns:android="http://schemas.android.com/apk/res/android">
3.?? <alpha/>
4.?? <scale/>
5.?? <translate/>
6.?? <rotate/>
7. </set>
復制代碼
Android動畫解析--XML
<alpha>
1. <?xml version="1.0" encoding="utf-8"?>
2. <set xmlns:android="http://schemas.android.com/apk/res/android" >
3. <alpha
4. android:fromAlpha="0.1"
5. android:toAlpha="1.0"
6. android:duration="3000"
7. />
8. <!-- 透明度控制動畫效果 alpha
9.???????? 浮點型值:
10.???????????? fromAlpha 屬性為動畫起始時透明度
11.???????????? toAlpha?? 屬性為動畫結束時透明度
12.???????????? 說明:
13.???????????????? 0.0表示完全透明
14.???????????????? 1.0表示完全不透明
15.???????????? 以上值取0.0-1.0之間的float數據類型的數字
16.?????????
17.???????? 長整型值:
18.???????????? duration? 屬性為動畫持續時間
19.???????????? 說明:?????
20.???????????????? 時間以毫秒為單位
21. -->
22. </set>
復制代碼
<scale>
1. <?xml version="1.0" encoding="utf-8"?>
2. <set xmlns:android="http://schemas.android.com/apk/res/android">
3.??? <scale??
4.?????????? android:interpolator=
5.????????????????????? "@android:anim/accelerate_decelerate_interpolator"
6.?????????? android:fromXScale="0.0"
7.?????????? android:toXScale="1.4"
8.?????????? android:fromYScale="0.0"
9.?????????? android:toYScale="1.4"
10.?????????? android:pivotX="50%"
11.?????????? android:pivotY="50%"
12.?????????? android:fillAfter="false"
13.?????????? android:duration="700" />
14. </set>
15. <!-- 尺寸伸縮動畫效果 scale
16.??????? 屬性:interpolator 指定一個動畫的插入器
17.???????? 在我試驗過程中,使用android.res.anim中的資源時候發現
18.???????? 有三種動畫插入器:
19.???????????? accelerate_decelerate_interpolator? 加速-減速 動畫插入器
20.???????????? accelerate_interpolator??????? 加速-動畫插入器
21.???????????? decelerate_interpolator??????? 減速- 動畫插入器
22.???????? 其他的屬于特定的動畫效果
23.?????? 浮點型值:
24.??????????
25.???????????? fromXScale 屬性為動畫起始時 X坐標上的伸縮尺寸???
26.???????????? toXScale?? 屬性為動畫結束時 X坐標上的伸縮尺寸?????
27.?????????
28.???????????? fromYScale 屬性為動畫起始時Y坐標上的伸縮尺寸???
29.???????????? toYScale?? 屬性為動畫結束時Y坐標上的伸縮尺寸???
30.?????????
31.???????????? 說明:
32.????????????????? 以上四種屬性值???
33.????
34.???????????????????? 0.0表示收縮到沒有
35.???????????????????? 1.0表示正常無伸縮?????
36.???????????????????? 值小于1.0表示收縮??
37.???????????????????? 值大于1.0表示放大
38.?????????
39.???????????? pivotX???? 屬性為動畫相對于物件的X坐標的開始位置
40.???????????? pivotY???? 屬性為動畫相對于物件的Y坐標的開始位置
41.?????????
42.???????????? 說明:
43.???????????????????? 以上兩個屬性值 從0%-100%中取值
44.???????????????????? 50%為物件的X或Y方向坐標上的中點位置
45.?????????
46.???????? 長整型值:
47.???????????? duration? 屬性為動畫持續時間
48.???????????? 說明:?? 時間以毫秒為單位
49.
50.???????? 布爾型值:
51.???????????? fillAfter 屬性 當設置為true ,該動畫轉化在動畫結束后被應用
52. -->
復制代碼
<translate>
1. <?xml version="1.0" encoding="utf-8"?>
2. <set xmlns:android="http://schemas.android.com/apk/res/android">
3. <translate
4. android:fromXDelta="30"
5. android:toXDelta="-80"
6. android:fromYDelta="30"
7. android:toYDelta="300"
8. android:duration="2000"
9. />
10. <!-- translate 位置轉移動畫效果
11.???????? 整型值:
12.???????????? fromXDelta 屬性為動畫起始時 X坐標上的位置???
13.???????????? toXDelta?? 屬性為動畫結束時 X坐標上的位置
14.???????????? fromYDelta 屬性為動畫起始時 Y坐標上的位置
15.???????????? toYDelta?? 屬性為動畫結束時 Y坐標上的位置
16.???????????? 注意:
17.????????????????????? 沒有指定fromXType toXType fromYType toYType 時候,
18.????????????????????? 默認是以自己為相對參照物????????????
19.???????? 長整型值:
20.???????????? duration? 屬性為動畫持續時間
21.???????????? 說明:?? 時間以毫秒為單位
22. -->
23. </set>
復制代碼
<rotate>
1. <?xml version="1.0" encoding="utf-8"?>
2. <set xmlns:android="http://schemas.android.com/apk/res/android">
3. <rotate
4.???????? android:interpolator="@android:anim/accelerate_decelerate_interpolator"
5.???????? android:fromDegrees="0"
6.???????? android:toDegrees="+350"?????????
7.???????? android:pivotX="50%"
8.???????? android:pivotY="50%"?????
9.???????? android:duration="3000" />??
10. <!-- rotate 旋轉動畫效果
11.??????? 屬性:interpolator 指定一個動畫的插入器
12.????????????? 在我試驗過程中,使用android.res.anim中的資源時候發現
13.????????????? 有三種動畫插入器:
14.???????????????? accelerate_decelerate_interpolator?? 加速-減速 動畫插入器
15.???????????????? accelerate_interpolator?????????????? 加速-動畫插入器
16.???????????????? decelerate_interpolator?????????????? 減速- 動畫插入器
17.????????????? 其他的屬于特定的動畫效果
18.????????????????????????????
19.??????? 浮點數型值:
20.???????????? fromDegrees 屬性為動畫起始時物件的角度???
21.???????????? toDegrees?? 屬性為動畫結束時物件旋轉的角度 可以大于360度???
22.
23.?????????
24.???????????? 說明:
25.????????????????????? 當角度為負數——表示逆時針旋轉
26.????????????????????? 當角度為正數——表示順時針旋轉??????????????
27.????????????????????? (負數from——to正數:順時針旋轉)???
28.????????????????????? (負數from——to負數:逆時針旋轉)
29.????????????????????? (正數from——to正數:順時針旋轉)
30.????????????????????? (正數from——to負數:逆時針旋轉)??????
31.
32.???????????? pivotX???? 屬性為動畫相對于物件的X坐標的開始位置
33.???????????? pivotY???? 屬性為動畫相對于物件的Y坐標的開始位置
34.????????????????
35.???????????? 說明:??????? 以上兩個屬性值 從0%-100%中取值
36.????????????????????????? 50%為物件的X或Y方向坐標上的中點位置
37.
38.???????? 長整型值:
39.???????????? duration? 屬性為動畫持續時間
40.???????????? 說明:?????? 時間以毫秒為單位
41. -->
42. </set>
復制代碼
如何使用XML中的動畫效果
1. public static Animation loadAnimation (Context context, int id)
2. //第一個參數Context為程序的上下文???
3. //第二個參數id為動畫XML文件的引用
4. //例子:
5. myAnimation= AnimationUtils.loadAnimation(this,R.anim.my_action);
6. //使用AnimationUtils類的靜態方法loadAnimation()來加載XML中的動畫XML文件
復制代碼
如何在Java代碼中定義動畫
1. //在代碼中定義 動畫實例對象
2. private Animation myAnimation_Alpha;
3. private Animation myAnimation_Scale;
4. private Animation myAnimation_Translate;
5. private Animation myAnimation_Rotate;
6.????
7.???? //根據各自的構造方法來初始化一個實例對象
8. myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
9.
10. myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
11.????????????? Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
12.
13. myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
14.
15. myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
16.??????????????? Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
復制代碼
Android動畫解析--JavaCode
AlphaAnimation
① AlphaAnimation類對象定義
1. private AlphaAnimation myAnimation_Alpha;
復制代碼
② AlphaAnimation類對象構造
1. AlphaAnimation(float fromAlpha, float toAlpha)
2. //第一個參數fromAlpha為 動畫開始時候透明度
3. //第二個參數toAlpha為 動畫結束時候透明度
4. myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);
5. //說明:
6. //??????????????? 0.0表示完全透明
7. //??????????????? 1.0表示完全不透明
復制代碼
③ 設置動畫持續時間
1. myAnimation_Alpha.setDuration(5000);
2. //設置時間持續時間為 5000毫秒
復制代碼
ScaleAnimation
① ScaleAnimation類對象定義
1. private AlphaAnimation myAnimation_Alpha;
復制代碼
② ScaleAnimation類對象構造
1. ScaleAnimation(float fromX, float toX, float fromY, float toY,
2.??????????? int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
3. //第一個參數fromX為動畫起始時 X坐標上的伸縮尺寸???
4. //第二個參數toX為動畫結束時 X坐標上的伸縮尺寸?????
5. //第三個參數fromY為動畫起始時Y坐標上的伸縮尺寸???
6. //第四個參數toY為動畫結束時Y坐標上的伸縮尺寸??
7. /*說明:
8.???????????????????? 以上四種屬性值???
9.???????????????????? 0.0表示收縮到沒有
10.???????????????????? 1.0表示正常無伸縮?????
11.???????????????????? 值小于1.0表示收縮??
12.???????????????????? 值大于1.0表示放大
13. */
14. //第五個參數pivotXType為動畫在X軸相對于物件位置類型??
15. //第六個參數pivotXValue為動畫相對于物件的X坐標的開始位置
16. //第七個參數pivotXType為動畫在Y軸相對于物件位置類型???
17. //第八個參數pivotYValue為動畫相對于物件的Y坐標的開始位置
18. myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
19.????????????? Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
復制代碼
③ 設置動畫持續時間
1. myAnimation_Scale.setDuration(700);
2. //設置時間持續時間為 700毫秒
復制代碼
TranslateAnimation
① TranslateAnimation類對象定義
1. private AlphaAnimation myAnimation_Alpha;
復制代碼
② TranslateAnimation類對象構造
1. TranslateAnimation(float fromXDelta, float toXDelta,
2.??????????????????????? float fromYDelta, float toYDelta)
3. //第一個參數fromXDelta為動畫起始時 X坐標上的移動位置???
4. //第二個參數toXDelta為動畫結束時 X坐標上的移動位置??????
5. //第三個參數fromYDelta為動畫起始時Y坐標上的移動位置?????
6. //第四個參數toYDelta為動畫結束時Y坐標上的移動位置
復制代碼
③ 設置動畫持續時間
1. myAnimation_Translate.setDuration(2000);
2. //設置時間持續時間為 2000毫秒
復制代碼
RotateAnimation
① RotateAnimation類對象定義
1. private AlphaAnimation myAnimation_Alpha;
復制代碼
② RotateAnimation類對象構造
1. RotateAnimation(float fromDegrees, float toDegrees,
2.???????????? int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
3. //第一個參數fromDegrees為動畫起始時的旋轉角度???
4. //第二個參數toDegrees為動畫旋轉到的角度???
5. //第三個參數pivotXType為動畫在X軸相對于物件位置類型??
6. //第四個參數pivotXValue為動畫相對于物件的X坐標的開始位置
7. //第五個參數pivotXType為動畫在Y軸相對于物件位置類型???
8. //第六個參數pivotYValue為動畫相對于物件的Y坐標的開始位置
9. myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f,
10.??????????????? Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
復制代碼
③ 設置動畫持續時間
1. myAnimation_Rotate.setDuration(3000);
2. //設置時間持續時間為 3000毫秒
復制代碼
如何使用Java代碼中的動畫效果
使用從View父類繼承過來的方法startAnimation()來為View或是子類View等等添加一個動畫效果
1. public void startAnimation (Animation animation)
轉載于:https://www.cnblogs.com/leizhenzi/archive/2011/08/16/2141292.html
總結
以上是生活随笔為你收集整理的(转)android四种动画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android实现飘动的旗帜效果实例
- 下一篇: velocity 继续之 语法学习篇