【Android動畫】之Tween動畫 (漸變、縮放、位移、旋轉)

Android 平臺提供了兩類動畫。 一類是Tween動畫,就是對場景裏的對象不斷的進行圖像變化來產生動畫效果(旋轉、平移、放縮和漸變)。

第二類就是 Frame動畫,即順序的播放事先做好的圖像,與gif圖片原理類似。

 

下面就講一下Tweene Animations。

 

主要類:

 

Animation   動畫

AlphaAnimation 漸變透明度

RotateAnimation 畫面旋轉

ScaleAnimation 漸變尺寸縮放

TranslateAnimation 位置移動

AnimationSet  動畫集

 

 

有了這些類,那麼我們如何來實現動畫效果呢? 

 

以自定義View爲例,該View很簡單,畫面上只有一個圖片。 現在我們要對整個View分別實現各種Tween動畫效果。

 

AlphaAnimation

 

通過代碼實現 AlphaAnimation,如下:

  1. //初始化  
  2. Animation alphaAnimation = new AlphaAnimation(0.1f, 1.0f);  
  3. //設置動畫時間            alphaAnimation.setDuration(3000);  
  4.                 this.startAnimation(alphaAnimation);  
 

其中AlphaAnimation類第一個參數fromAlpha表示動畫起始時的透明度, 第二個參數toAlpha表示動畫結束時的透明度。 

setDuration用來設置動畫持續時間。

 

RotateAnimation


代碼:

  1. Animation rotateAnimation = new RotateAnimation(0f, 360f);  
  2.                 rotateAnimation.setDuration(1000);  
  3.                 this.startAnimation(rotateAnimation);  
 

其中RotateAnimation類第一個參數fromDegrees表示動畫起始時的角度, 第二個參數toDegrees表示動畫結束時的角度。 

另外還可以設置伸縮模式pivotXType、pivotYType, 伸縮動畫相對於x,y 座標的開始位置pivotXValue、pivotYValue等。

 

ScaleAnimation

代碼:

  1. //初始化  
  2. Animation scaleAnimation = new ScaleAnimation(0.1f, 1.0f,0.1f,1.0f);  
  3. //設置動畫時間  
  4. scaleAnimation.setDuration(500);  
  5.                 this.startAnimation(scaleAnimation);  
 

ScaleAnimation類中

第一個參數fromX ,第二個參數toX:分別是動畫起始、結束時X座標上的伸縮尺寸。

第三個參數fromY ,第四個參數toY:分別是動畫起始、結束時Y座標上的伸縮尺寸。

另外還可以設置伸縮模式pivotXType、pivotYType, 伸縮動畫相對於x,y 座標的開始位置pivotXValue、pivotYValue等。

 

TranslateAnimation

代碼:

  1. //初始化  
  2. Animation translateAnimation = new TranslateAnimation(0.1f, 100.0f,0.1f,100.0f);  
  3. //設置動畫時間                translateAnimation.setDuration(1000);  
  4.                             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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章