1.Android的animation由四種類型組成:
XML中
alpha
漸變透明度動畫效果
scale
漸變尺寸伸縮動畫效果
translate
畫面轉換位置移動動畫效果
rotate
畫面轉移旋轉動畫效果
JavaCode中
AlphaAnimation
ScaleAnimation
TranslateAnimation
RotateAnimation
2.Animation主要有兩種動畫模式:
一種是tweened animation(漸變動畫)
JavaCode
一種是frame by frame(畫面轉換動畫)
3.如何在XML檔案中定義動畫
① 打開Eclipse,建立Android工程
② 在res目錄中建立anim檔案夾
③ 在anim目錄中建立一個myanim.xml(注意檔案名小寫)
④ 加入XML的動畫代碼
1
2
3
4
5
6
7
<code><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"utf-8"</code><code>?></code>
<code><</code><code>set</code> <code>xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code><code>></code>
<code> </code><code><alpha/></code>
<code> </code><code><scale/></code>
<code> </code><code><translate/></code>
<code> </code><code><rotate/></code>
<code></</code><code>set</code><code>></code>
4.Android動畫解析--XML
<alpha> 透明度
8
<code><</code><code>set</code> <code>xmlns:android=</code><code>"http://schemas.android.com/apk/res/android"</code> <code>></code>
<code> </code><code><alpha</code>
<code> </code><code>android:fromAlpha=</code><code>"0.1"</code>
<code> </code><code>android:toAlpha=</code><code>"1.0"</code>
<code> </code><code>android:duration=</code><code>"3000"</code>
<code> </code><code>/></code>
注釋:
fromAlpha(浮點型值) 屬性為動畫起始時透明度, 0.0表示完全透明
toAlpha(浮點型值) 屬性為動畫結束時透明度, 1.0表示完全不透明.
fromAlpha 和 toAlpha 的取值在0.0-1.0之間的float資料類型的數字
duration(長整型值) 屬性為動畫持續時間,時間以毫秒為機關
<scale> 縮放
9
10
11
12
13
14
15
16
17
<code> </code><code><scale</code>
<code> </code><code>android:interpolator= </code><code>"@android:anim/accelerate_decelerate_interpolator"</code>
<code> </code>
<code> </code><code>android:fromXScale=</code><code>"0.0"</code>
<code> </code><code>android:toXScale=</code><code>"1.4"</code>
<code> </code>
<code> </code><code>android:fromYScale=</code><code>"0.0"</code>
<code> </code><code>android:toYScale=</code><code>"1.4"</code>
<code> </code><code>android:pivotX=</code><code>"50%"</code>
<code> </code><code>android:pivotY=</code><code>"50%"</code>
<code> </code>
<code> </code><code>android:fillAfter=</code><code>"false"</code>
<code> </code><code>android:duration=</code><code>"700"</code> <code>/></code>
interpolator 指定一個動畫的插入器在我試驗過程中,使用android.res.anim中的資源時候發現有三種動畫插入器:
accelerate_decelerate_interpolator 加速-減速 動畫插入器
accelerate_interpolator 加速-動畫插入器
decelerate_interpolator 減速- 動畫插入器
其他的屬于特定的動畫效果
A.浮點型值:
fromXScale 屬性為動畫起始時 X坐标上的伸縮尺寸
toXScale 屬性為動畫結束時 X坐标上的伸縮尺寸
fromYScale 屬性為動畫起始時Y坐标上的伸縮尺寸
toYScale 屬性為動畫結束時Y坐标上的伸縮尺寸
說明:
0.0表示收縮到沒有,1.0表示正常無伸縮
值小于1.0表示收縮,值大于1.0表示放大
pivotX 屬性為動畫相對于物件的X坐标的開始位置
pivotY 屬性為動畫相對于物件的Y坐标的開始位置
以上兩個屬性值 從0%-100%中取值
50%為物件的X或Y方向坐标上的中點位置
B.長整型值:
duration 屬性為動畫持續時間
說明: 時間以毫秒為機關
C.布爾型值:
fillAfter 屬性 當設定為true ,該動畫轉化在動畫結束後被應用
<translate> 移動
<code> </code><code><translate</code>
<code> </code><code>android:fromXDelta=</code><code>"30"</code>
<code> </code><code>android:toXDelta=</code><code>"-80"</code>
<code> </code><code>android:fromYDelta=</code><code>"30"</code>
<code> </code><code>android:toYDelta=</code><code>"300"</code>
<code> </code><code>android:duration=</code><code>"2000"</code>
<code> </code><code>/></code>
整型值:
fromXDelta 屬性為動畫起始時 X坐标上的位置
toXDelta 屬性為動畫結束時 X坐标上的位置
fromYDelta 屬性為動畫起始時 Y坐标上的位置
toYDelta 屬性為動畫結束時 Y坐标上的位置
注意:
沒有指定fromXType toXType fromYType toYType 時候,預設是以自己為相對參照物
長整型值:
duration 屬性為動畫持續時間,時間以毫秒為機關
<rotate> 旋轉
<code> </code><code><rotate</code>
<code> </code><code>android:interpolator=</code><code>"@android:anim/accelerate_decelerate_interpolator"</code>
<code> </code><code>android:fromDegrees=</code><code>"0"</code>
<code> </code><code>android:toDegrees=</code><code>"+350"</code>
<code> </code><code>android:pivotX=</code><code>"50%"</code>
<code> </code><code>android:pivotY=</code><code>"50%"</code>
<code> </code><code>android:duration=</code><code>"3000"</code> <code>/></code>
屬性:interpolator 指定一個動畫的插入器有三種動畫插入器:
accelerate_decelerate_interpolator 加速-減速 動畫插入器
accelerate_interpolator 加速-動畫插入器
decelerate_interpolator 減速- 動畫插入器
其他的屬于特定的動畫效果
A.浮點數型值:
fromDegrees 屬性為動畫起始時物件的角度
toDegrees 屬性為動畫結束時物件旋轉的角度 可以大于360度
當角度為負數——表示逆時針旋轉
當角度為正數——表示順時針旋轉
(負數from——to正數:順時針旋轉)
(負數from——to負數:逆時針旋轉)
(正數from——to正數:順時針旋轉)
(正數from——to負數:逆時針旋轉)
pivotX 屬性為動畫相對于物件的X坐标的開始位置
pivotY 屬性為動畫相對于物件的Y坐标的開始位置
說明: 以上兩個屬性值 從0%-100%中取值,50%為物件的X或Y方向坐标上的中點位置
B.長整型值:
duration 屬性為動畫持續時間,時間以毫秒為機關
如何使用XML中的動畫效果
<code>/**</code>
<code>*Context 為程式的上下文</code>
<code>*id 為動畫XML檔案的引用</code>
<code>**/</code>
<code>public</code> <code>static</code> <code>Animation loadAnimation (Context context, </code><code>int</code> <code>id)</code>
<code>//例子:</code>
<code>myAnimation= AnimationUtils.loadAnimation(</code><code>this</code><code>,R.anim.my_action);</code>
<code>//使用AnimationUtils類的靜态方法loadAnimation()來加載XML中的動畫XML檔案</code>
5.Android動畫解析--JavaCode
A.AlphaAnimation
① AlphaAnimation類對象定義
<code>private</code> <code>AlphaAnimation myAnimation_Alpha;</code>
② AlphaAnimation類對象構造
<code>AlphaAnimation(float fromAlpha, float toAlpha)</code>
<code>//第一個參數fromAlpha為 動畫開始時候透明度</code>
<code>//第二個參數toAlpha為 動畫結束時候透明度</code>
<code>myAnimation_Alpha=</code><code>new</code> <code>AlphaAnimation(</code><code>0</code><code>.1f, </code><code>1</code><code>.0f);</code>
<code>//說明:</code>
<code>// 0.0表示完全透明</code>
<code>// 1.0表示完全不透明</code>
<code>myAnimation_Alpha.setDuration(</code><code>5000</code><code>);</code>
<code>//設定時間持續時間為 5000毫秒</code>
③ 設定動畫持續時間
B.ScaleAnimation
① ScaleAnimation類對象定義
② ScaleAnimation類對象構造
18
19
<code>ScaleAnimation(float fromX, float toX, float fromY, float toY,</code>
<code>int</code> <code>pivotXType, float pivotXValue, </code><code>int</code> <code>pivotYType, float pivotYValue)</code>
<code>//第一個參數fromX為動畫起始時 X坐标上的伸縮尺寸</code>
<code>//第二個參數toX為動畫結束時 X坐标上的伸縮尺寸</code>
<code>//第三個參數fromY為動畫起始時Y坐标上的伸縮尺寸</code>
<code>//第四個參數toY為動畫結束時Y坐标上的伸縮尺寸</code>
<code>/*說明:</code>
<code>以上四種屬性值</code>
<code>0.0表示收縮到沒有</code>
<code>1.0表示正常無伸縮</code>
<code>值小于1.0表示收縮</code>
<code>值大于1.0表示放大</code>
<code>*/</code>
<code>//第五個參數pivotXType為動畫在X軸相對于物件位置類型</code>
<code>//第六個參數pivotXValue為動畫相對于物件的X坐标的開始位置</code>
<code>//第七個參數pivotXType為動畫在Y軸相對于物件位置類型</code>
<code>//第八個參數pivotYValue為動畫相對于物件的Y坐标的開始位置</code>
<code>myAnimation_Scale =</code><code>new</code> <code>ScaleAnimation(</code><code>0</code><code>.0f, </code><code>1</code><code>.4f, </code><code>0</code><code>.0f, </code><code>1</code><code>.4f,</code>
<code>Animation.RELATIVE_TO_SELF, </code><code>0</code><code>.5f, Animation.RELATIVE_TO_SELF, </code><code>0</code><code>.5f);</code>
<code>myAnimation_Scale.setDuration(</code><code>700</code><code>);</code>
<code>//設定時間持續時間為 700毫秒</code>
C.TranslateAnimation
① TranslateAnimation類對象定義
② TranslateAnimation類對象構造
<code>TranslateAnimation(float fromXDelta, float toXDelta,</code>
<code>float fromYDelta, float toYDelta)</code>
<code>//第一個參數fromXDelta為動畫起始時 X坐标上的移動位置</code>
<code>//第二個參數toXDelta為動畫結束時 X坐标上的移動位置</code>
<code>//第三個參數fromYDelta為動畫起始時Y坐标上的移動位置</code>
<code>//第四個參數toYDelta為動畫結束時Y坐标上的移動位置</code>
③ 設定動畫持續時間
<code>myAnimation_Translate.setDuration(</code><code>2000</code><code>);</code>
<code>//設定時間持續時間為 2000毫秒</code>
D.RotateAnimation
① RotateAnimation類對象定義
② RotateAnimation類對象構造
<code>RotateAnimation(float fromDegrees, float toDegrees,</code>
<code>//第一個參數fromDegrees為動畫起始時的旋轉角度</code>
<code>//第二個參數toDegrees為動畫旋轉到的角度</code>
<code>//第三個參數pivotXType為動畫在X軸相對于物件位置類型</code>
<code>//第四個參數pivotXValue為動畫相對于物件的X坐标的開始位置</code>
<code>//第五個參數pivotXType為動畫在Y軸相對于物件位置類型</code>
<code>//第六個參數pivotYValue為動畫相對于物件的Y坐标的開始位置</code>
<code>myAnimation_Rotate=</code><code>new</code> <code>RotateAnimation(</code><code>0</code><code>.0f, +</code><code>350</code><code>.0f,</code>
<code>Animation.RELATIVE_TO_SELF,</code><code>0</code><code>.5f,Animation.RELATIVE_TO_SELF, </code><code>0</code><code>.5f);</code>
<code>myAnimation_Rotate.setDuration(</code><code>3000</code><code>);</code>
<code>//設定時間持續時間為 3000毫秒</code>
如何使用Java代碼中的動畫效果
使用從View父類繼承過來的方法startAnimation()來為View或是子類View等等添加一個動畫效果
<code>public</code> <code>void</code> <code>startAnimation (Animation animation)</code>
恩恩!差不多完了,這樣看着爽多了哈~
本文轉自zhf651555765 51CTO部落格,原文連結:http://blog.51cto.com/smallwoniu/1249022,如需轉載請自行聯系原作者