1. 程式人生 > 其它 >android 補間動畫

android 補間動畫

android開發過程中,為了更好的展示應用程式,應用程式新增動畫,能夠很好地實現這個功能。如果動畫中的影象變化有一定的規律,可以採用自動生成影象的方式來生成動畫,例如影象的移動、旋轉、縮放等。自動生成中間影象的動畫,補間動畫,只需指定第一幀和最後一幀。

補間動畫的優點是節省硬碟空間,缺點是,無法生成複雜的動畫。本文主要介紹經常用到的四種補間動畫:移動、縮放、旋轉、透明度。

1.移動補間動畫

移動是比較常見的動畫效果。通過xml檔案或者java程式碼能夠實現補間動畫的移動效果。在res/anim,檔案中新建test_translate.xml檔案。

1 <?xml version="1.0" encoding="utf-8"?>
2 <set xmlns:android="http://schemas.android.com/apk/res/android">
3     <translate xmlns:android="http://schemas.android.com/apk/res/android"  
4     android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
5     android:fromXDelta="0" android:toXDelta="320" android:fromYDelta="0" android:toYDelta="0" >
6         
7     </translate>
8 
9 </set>

 android:interpolator:表示動畫渲染器。可以設定3個動畫渲染器:accelerate_decelerate_interpolator(動畫加速減速器),先加速,再減速;accelerate_interpolator(動畫加速器),動畫開始時比較慢,逐漸加速;decelerate_interpolator(動畫減速器):動畫開始時最快,逐漸減速。

android:fromXDelta:動畫起點位置的橫座標;

android:fromYDelta:動畫起點位置的縱座標;

android:toXDelta:動畫終點位置的橫座標;

android:toYDelta:動畫終點位置的縱座標。

android:duration:動畫的持續時間,單位是毫秒。動畫在指定的時間內,從起點移動到終點。

補間動畫通過AnimationUtils.loadAnimation(this,int resid)來裝載補間動畫,setAnimation為控制元件繫結動畫,animation.start(),啟動動畫,animation.setRepeatCount(Animation.INFINITE);迴圈顯示動畫。

補間動畫的三個狀態:動畫開始、動畫結束、動畫迴圈。監聽狀態的介面AnimationListener,3個方法為:onAnimationStart、onAnimationEnd、onAnimationRepeat。

2.縮放補間動畫

通過<scale>標籤定義縮放補間動畫。

1     <scale
2         android:interpolator="@android:anim/accelerate_interpolator"
3         android:fromXScale="1.0"
4         android:fromYScale="0.0"
5         android:toXScale="0.0"
6         android:toYScale="1.0"
7         android:duration="400">
8         
9     </scale>

該段程式碼實現資料從上往下的展開。

 android:fromXScale:表示沿X軸縮放的起始比例。

 android:fromYScale:表示沿Y軸縮放的起始比例。

 android:toXScale:表示沿x軸縮放的結束比例

 android:toYScale:表示沿y軸縮放的結束比例

 android:pivotX:沿x軸縮放的支點位置

 android:pivotY:沿y軸縮放的支點位置

3.旋轉補間動畫

通過<roate>標籤可以定義旋轉補間動畫。

1     <rotate  android:interpolator="@android:anim/accelerate_interpolator"
2         android:fromDegrees="0"
3         android:toDegrees="150"
4         android:pivotX="50%"
5         android:pivotY="50%"
6         android:duration="10000"
7         android:repeatMode="restart"
8         android:repeatCount="infinite"/>

android:fromDegrees:旋轉的起始角度。

 android:toDegrees:旋轉的結束角度

android:repeatCount:設定旋轉的次數。該屬性需要設定一個整數值,如果為0,則表示不迴圈。

android:repeatMode:設定重複的模式。restart,表示重新開始迴圈。reverse,表示偶數次顯示動畫會與動畫檔案定義的方向相反。

4.透明度補間動畫

通過  <alpha />標籤設定透明度補間動畫。

1     <alpha android:interpolator="@android:anim/accelerate_interpolator" 
2         android:fromAlpha="1.0" android:toAlpha="0.2" android:duration="2000"/>

 android:fromAlpha:動畫的起始透明度

android:toAlpha:動畫結束的透明度

屬性值在0.0-1.0之間,0.0為完全透明,1.0表示不透明。

android 還有一個振動動畫渲染器 cycle_interpolator.