一 概述
本文主要講解視圖動畫相關的知識,除了四種基本動畫以外,還有set
標籤的使用。視圖動畫都可以通過兩種方式來使用,一是通過xml,二是隻使用代碼。視圖動畫主要分爲如下幾種動畫:
類別 | 描述 |
---|---|
alpha | 透明度動畫 |
scale | 縮放動畫 |
translate | 平移動畫 |
rotate | 旋轉動畫 |
以上四種動畫,有部分通用的屬性和方法,如下表:
xml屬性 | 對應方法 | 描述 |
---|---|---|
android:detachWallpaper | setDetachWallpaper(boolean) | 是否在壁紙上運行 |
android:duration | setDuration(long) | 動畫持續時間,毫秒爲單位 |
android:fillAfter | setFillAfter(boolean) | 動畫結束時是否保持在動畫最後的狀態 |
android:fillBefore | setFillBefore(boolean) | 動畫結束時是否保持在動畫開始前的狀態 |
android:fillEnabled | setFillEnabled(boolean) | 與android:fillBefore效果相同 |
android:interpolator | setInterpolator(Interpolator) | 設定插值器(後面有講解) |
android:repeatCount | setRepeatCount(int) | 重複次數 |
android:repeatMode | setRepeatMode(int) | 重複類型,reverse表示倒序回放,restart表示從頭播放 |
android:startOffset | setStartOffset(long) | 調用start函數之後的延遲時間,單位爲毫秒 |
android:zAdjustment | setZAdjustment(int) | 動畫的內容運行時在Z軸上的位置,上層或者底層(top/bottom/normal),默認爲normal |
二 alpha動畫
alpha動畫,即是透明度動畫,可以操作透明度,特有屬性有
xml屬性 | 描述 |
---|---|
android:fromAlpha | 動畫開始的透明度 |
android:toAlpha | 動畫結束的透明度 |
在代碼中,創建AlphaAnimation
對象的時候,也可以在構造方法中指定上述的兩個參數。AlphaAnimation(float fromAlpha, float toAlpha)
。
alpha動畫相對比較簡單。
二 scale動畫
縮放動畫,動畫中可以縮放視圖,改變視圖的大小,特有的屬性如下
xml屬性 | 對應方法 | 描述 |
---|---|---|
android:fromXScale | ScaleAnimation(float fromX, …) | 初始x軸縮放比例,1表示原始大小 |
android:toXScale | ScaleAnimation(…, float toX, …) | 結束X軸縮放比例 |
android:fromYScale | ScaleAnimation(…, float fromY, …) | 初始Y軸縮放比例 |
android:toYScale | ScaleAnimation(…, float toY, …) | 結束Y軸縮放比例 |
android:pivotY | ScaleAnimation(…, float pivotY) | 縮放起點Y軸座標 |
android:pivotX | ScaleAnimation(…, float pivotX, …) | 縮放起點X軸座標(數值、百分數、百分數p,譬如50表示以當前View左上角座標加50px爲初始點、50%表示以當前View的左上角加上當前View寬高的50%做爲初始點、50%p表示以當前View的左上角加上父控件寬高的50%做爲初始點) |
以上的ScaleAnimation(float fromX, …)
代表構造方法時傳遞的參數。
三 translate
平移動畫,動畫中可以平移視圖,改變視圖的位置,特有的屬性如下
xml屬性 | 對應方法 | 描述 |
---|---|---|
android:fromXDelta | TranslateAnimation(float fromXDelta, …) | 起始點X軸座標(數值、百分數、百分數p,譬如50表示以當前View左上角座標加50px爲初始點、50%表示以當前View的左上角加上當前View寬高的50%做爲初始點、50%p表示以當前View的左上角加上父控件寬高的50%做爲初始點) |
android:fromYDelta | TranslateAnimation(…, float fromYDelta, …) | 起始點Y軸從標,同上規律 |
android:toXDelta | TranslateAnimation(…, float toXDelta, …) | 結束點X軸座標,同上規律 |
android:toYDelta | TranslateAnimation(…, float toYDelta) | 結束點Y軸 |
值得說明的fromXDelta
中的x
座標,默認是以控件自己作爲參照物。如果是0,則是當前位置。
四 rotate
旋轉動畫,動畫中可以旋轉視圖,特有的屬性如下
xml屬性 | 對應方法 | 描述 |
---|---|---|
android:fromDegrees | RotateAnimation(float fromDegrees, …) | 旋轉開始角度,正代表順時針度數,負代表逆時針度數 |
android:toDegrees | RotateAnimation(…, float toDegrees, …) | 旋轉結束角度,正代表順時針度數,負代表逆時針度數 |
android:pivotX | RotateAnimation(…, float pivotX, …) | 起點X座標 |
android:pivotY | RotateAnimation(…, float pivotY) | 起點Y座標 |
以上四種基本動畫比較簡單,如果需要聯合使用可以使用set
標籤,或者在代碼中使用AnimationSet
。