1. 程式人生 > >android 動畫 -- tween動畫

android 動畫 -- tween動畫

先看一下android動畫框架:
這裡寫圖片描述


tween動畫詳解:


tween動畫可以實現讓某個控制元件展現出旋轉,漸變,移動,縮放的一種轉換過程,當然,這些單獨的動畫也可以組合一起來使用,可以打造一些適用的效果。

主要類

  Animation
  AlphaAnimation--漸變透明度
  RotateAnimation --旋轉
ScaleAnimation --縮放
TranslateAnimation   --移動
AnimationSet--動畫集(組合動畫)

實現方法

知道了這些類,那麼怎麼使用呢?要實現效果有兩種方法


  1. 第一種是在建立xml檔案,然後在程式碼中應用到控制元件上

首先建立xml檔案,比如:
<?xml version="1.0" encoding="utf-8"?>
<rotate
android:duration="1000"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="100%"
android:pivotY="100%"/>

這是一個旋轉的xml指定,其中duration表示時間,fromDegress屬性表示開始角度,單位:度,todegrees表示結束的角度,單位:度,pivotX表示旋轉中心的x座標,pivotY表示旋轉中心的Y座標,這兩個屬性有3種表示方式,數字方式表示相對於自身左邊緣的畫素值,num%表示代表相對於自身左邊緣或頂邊緣的百分比,num%p表示相對於父容器的左邊緣或頂邊緣的百分比。


.再來看漸變動畫
<alpha>
<android:fromAlpha="float"
android:toAlpha="float"/>

fromAlpha就是開始的alpha值,範圍在0.0到1.0之間,分別代表透明和完全不透明,toAlpha技術結束的alpha值,範圍也一樣


縮放動畫
<scale
android:fromXScale="float"
android:fromYScale="float"
android:pivotX="float"
android:pivotY="float"
android:toXScale="float"
android:toXScale="float"/>


fromXScale—開始的x方向相對自身的縮放比例,1.0表示沒變化,0.5表示開始 時縮小一倍。
fromYScale—開始的x方向相對自身的縮放比例,1.0表示沒變化,0.5表示開始 時縮小一倍。
toXScale—結尾的x方向上相對自身的縮放比例。
toXScale—結尾的x方向上相對自身的縮放比例。
pivotX—縮放的中心點x。
pivotY—縮放的中心點y


位移動畫
<translate
android:duration="1000"
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="100"
android:toYDelta="100"/>

這4個屬性一看就能明白,同樣也是前面3種表示方式哦。


另外如果想組合使用,這就要使用動畫容器來管理了,比如:
<set
<alpha
...
/>
<scale
...
/>
....
</set>

還有一個插值資源器android:interpolator
系統自帶的有:
AccelerateDecelerateInterpolator 在動畫開始與結束的地方速率改變比較慢,在中間的時候加速
AccelerateInterpolator 在動畫開始的地方速率改變比較慢,然後開始加速
AnticipateInterpolator 開始的時候向後然後向前甩
AnticipateOvershootInterpolator 開始的時候向後然後向前甩一定值後返回最後的值
BounceInterpolator 動畫結束的時候彈起
CycleInterpolator 動畫迴圈播放特定的次數,速率改變沿著正弦曲線
DecelerateInterpolator 在動畫開始的地方快然後慢
LinearInterpolator 以常量速率改變
OvershootInterpolator 向前甩一定值後再回到原來位置
那麼在set裡面使用插值器如果屬性shareInterPolator為ture表示共享,不設定預設為true,設定為flase相當於不起作用


**xml設定好以後我們就需要在程式碼中把這個動畫應用到控制元件上了,相應程式碼:
Animation animation=AnimationUtils.loadAnimation(this,R.anim.ds);
img=(ImageView)findViewById(R.id.imageView);
img.setAnimation(animation);

這樣就完成了。


2.在程式碼中建立動畫


首先建立相應的類:

  • AlphaAnimation 類有兩個構造方法
    AlphaAnimation(Context context, AttributeSet attrs)—這個可以匯入資原始檔,也就是之前說的xml。
    AlphaAnimation(float fromAlpha, float toAlpha)—很明顯,就是直接設定透明效果。

  • ScaleAnimation類
    ScaleAnimation(Context context, AttributeSet attrs)

    ScaleAnimation(float fromX, float toX, float fromY, float toY)—mPivotXType和mPivotYType為ABSOLUTE,mPivotX和mPivotY為0

    ScaleAnimation(float fromX, float toX, float fromY, float toY, float pivotX, float pivotY)—mPivotXType和mPivotYType為ABSOLUTE

    ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)—pivotXValue縮放中心點的X座標型別,取值範圍為ABSOLUTE、RELATIVE_TO_SELF、RELATIVE_TO_PARENT。pivotYValue縮放中心點的Y座標型別。

    RELATIVE_TO_PARENT 相對於父控制元件

    RELATIVE_TO_SELF 相對於自己

    RELATIVE_TO_ABSOLUTE 絕對座標


  • TranslateAnimation類

    TranslateAnimation(Context context, AttributeSet attrs)

    TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

    TranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)


  • RotateAnimation類(構造方法裡面的引數規則跟上面一樣)

    RotateAnimation(Context context, AttributeSet attrs)

    RotateAnimation(float fromDegrees, float toDegrees)

    RotateAnimation(float fromDegrees, float toDegrees, float pivotX, float pivotY)

    RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)

tween動畫(續)