android 動畫 -- tween動畫
先看一下android動畫框架:
tween動畫詳解:
tween動畫可以實現讓某個控制元件展現出旋轉,漸變,移動,縮放的一種轉換過程,當然,這些單獨的動畫也可以組合一起來使用,可以打造一些適用的效果。
主要類
Animation
AlphaAnimation--漸變透明度
RotateAnimation --旋轉
ScaleAnimation --縮放
TranslateAnimation --移動
AnimationSet--動畫集(組合動畫)
實現方法
知道了這些類,那麼怎麼使用呢?要實現效果有兩種方法
- 第一種是在建立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)