Android 平臺提供了兩類動畫。 一類是Tween動畫,就是對場景裏的對象不斷的進行圖像變化來產生動畫效果(旋轉、平移、放縮和漸變)。
第二類就是 Frame動畫,即順序的播放事先做好的圖像,與gif圖片原理類似。
下面就講一下Tweene Animations。
主要類:
Animation 動畫
AlphaAnimation 漸變透明度
RotateAnimation 畫面旋轉
ScaleAnimation 漸變尺寸縮放
TranslateAnimation 位置移動
AnimationSet 動畫集
有了這些類,那麼我們如何來實現動畫效果呢?
以自定義View爲例,該View很簡單,畫面上只有一個圖片。 現在我們要對整個View分別實現各種Tween動畫效果。
AlphaAnimation
通過代碼實現 AlphaAnimation,如下:
- //初始化
- Animation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);
- //設置動畫時間 alphaAnimation.setDuration(3000);
- this.startAnimation(alphaAnimation);
其中AlphaAnimation類第一個參數fromAlpha表示動畫起始時的透明度, 第二個參數toAlpha表示動畫結束時的透明度。
setDuration用來設置動畫持續時間。
RotateAnimation
代碼:
- Animation rotateAnimation = new RotateAnimation(0f, 360f);
- rotateAnimation.setDuration(1000);
- this.startAnimation(rotateAnimation);
其中RotateAnimation類第一個參數fromDegrees表示動畫起始時的角度, 第二個參數toDegrees表示動畫結束時的角度。
另外還可以設置伸縮模式pivotXType、pivotYType, 伸縮動畫相對於x,y 座標的開始位置pivotXValue、pivotYValue等。
ScaleAnimation
代碼:
- //初始化
- Animation scaleAnimation = new ScaleAnimation(0.1f, 1.0f,0.1f,1.0f);
- //設置動畫時間
- scaleAnimation.setDuration(500);
- this.startAnimation(scaleAnimation);
ScaleAnimation類中
第一個參數fromX ,第二個參數toX:分別是動畫起始、結束時X座標上的伸縮尺寸。
第三個參數fromY ,第四個參數toY:分別是動畫起始、結束時Y座標上的伸縮尺寸。
另外還可以設置伸縮模式pivotXType、pivotYType, 伸縮動畫相對於x,y 座標的開始位置pivotXValue、pivotYValue等。
TranslateAnimation
代碼:
- //初始化
- Animation translateAnimation = new TranslateAnimation(0.1f, 100.0f,0.1f,100.0f);
- //設置動畫時間 translateAnimation.setDuration(1000);
- this.startAnimation(translateAnimation);
TranslateAnimation類
第一個參數fromXDelta ,第二個參數toXDelta:分別是動畫起始、結束時X座標。
第三個參數fromYDelta ,第四個參數toYDelta:分別是動畫起始、結束時Y座標。
參數詳細說明:
表二 |
||
XML節點 | 功能說明 | |
alpha | 漸變透明度動畫效果 | |
<alpha android:fromAlpha=”0.1″ android:toAlpha=”1.0″ android:duration=”3000″ /> |
||
fromAlpha |
屬性爲動畫起始時透明度 |
0.0表示完全透明 1.0表示完全不透明 以上值取0.0-1.0之間的float數據類型的數字 |
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方向座標上的中點位置 |
|
轉載地址:http://blog.csdn.net/feng88724/article/details/6318430