概述:
View Animation 可以使視圖執行補間動畫。即給定兩個關鍵幀,然后中間部分按照一定的算法自動計算補充。
Android給出了下面幾個實現類,通常我們用AnimationSet將其他幾個組合使用,來達到相應的效果。
- Animation (基類)
- AlphaAnimation(透明度漸變動畫)
- RotateAnimation(旋轉動畫)
- ScaleAnimation(縮放動畫)
- TranslateAnimation(位移動畫)
- AnimationSet(動畫集合)
詳解:
Animation (基類)
定義了一些基礎方法,如:設置動畫持續時間,設置動畫插播器,設置動畫是否重復執行等。這樣子類只需關注自己的特色方法,不必重復實現這些公共方法了。
AlphaAnimation(透明度漸變動畫)
java代碼實現:
AlphaAnimation(float fromAlpha, float toAlpha)
xml實現:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"/>
</set>
參數解釋:
fromAlpha:動畫開始時view的透明度(0f~1f)
toAlpha:動畫結束時view的透明度(0f~1f)
RotateAnimation(旋轉動畫)
java代碼實現:
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)
xml實現:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />
</set>
參數解釋:
fromDegrees:開始轉動時的角度,可以大于360 也可以小0。
toDegrees:結束轉動的角度。
pivotXType,pivotYType:參考類型。有三種Animation.ABSOLUTE,Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT
pivotXValue,pivotYValue:當參考類型為ABSOLUTE時為數值其他為百分比
ScaleAnimation(縮放動畫)
java代碼實現:
ScaleAnimation(float fromXScale, float toXScale, float fromYScale, float toYScale)
ScaleAnimation(float fromXScale, float toXScale, float fromYScale, float toYScale, float pivotX, float pivotY)
ScaleAnimation(float fromXScale, float toXScale, float fromYScale, float toYScale, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
xml實現:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0"
android:toXScale="1"
android:fromYScale="0"
android:toYScale="3.3"
android:pivotX="100%"
android:pivotY="100%"
android:duration="1000" />
</set>
參數解釋:
fromXScale,fromYScale,toXScale, toYScale:X,Y坐標上開始和結束時縮放的尺寸
pivotXType, pivotXValue, pivotYType, pivotYValue:參考類型和距離參考物值和上面的RotateAnimation類似。
TranslateAnimation(位移動畫)
java代碼實現:
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)
xml實現:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="30"
android:toXDelta="80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"/>
</set>
參數解釋:
fromXDelta,toXDelta, fromYDelta,toYDelta,x,y坐標上開始和結束點的位置
fromXType,fromXValue...參考類型和距離參考物的值
示例:
目前,View Animation主要應用有下面幾點,我不在這里列舉了,用的時候再sdk和apidemo中可以找到,如下圖是sdk中的動畫定義,自己拷貝出來隨意修改下即可,后期有時間會補充。
1,窗口(Activity,Dialog,popupwindow)的打開和關閉時的動畫。
2,獨立View對象的出現,消失以及翻轉等。
結語:
在使用View Animation時我們可能容易忽略下面幾點,需要注意下。
1,View Animation動畫執行以后,視圖雖然發生了改變,但是View的真實位置并沒有發生改變。
2,android:fillAfter="true"等有些屬性在xml中要生效,必須直接放在set標簽下。
3,Android中自帶了很多動畫實現,我們要善于查找和使用。