Android的SDK提供了三種類型的動畫,分別是補間動畫、逐幀動畫和插值屬性動畫。下面先介紹第一種動畫效果-補間動畫。
補間動畫可以應用於View,讓開發人員可以定義一些關於大小、位置、旋轉和透明度的改變效果,達到讓View的內容動起來的效果。
補間動畫是使用Animation類建立的,它有4個直接子類,分別實現不同的動畫效果,分別為:
AlphaAnimation 漸層透明度動畫效果,即淡入淡出效果
ScaleAnimation 漸層尺寸伸縮動畫效果,即縮放效果
TranslateAnimation 畫面轉換位置移動動畫效果,移動效果
RotateAnimation 畫面轉移旋轉動畫效果,即旋轉效果
要使用補間動畫的效果,有兩種方法,第一種是在XML檔案中設定動畫效果;第二種是在Java代碼中設定。下面分別介紹這兩種方法:
1.在XML檔案中設定方式:
在Android項目的res目錄下建立anim檔案夾,然後在anim檔案夾下建立firstanim.xml,添加動畫效果的配置代碼,範例程式碼如下:
[html]
<?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"
/>
<!-- 透明度控制動畫效果 alpha
fromAlpha 為動畫起始時透明度
toAlpha 為動畫結束時透明度
取值說明: 0.0表示完全透明,1.0表示完全不透明,以上值取0.0-1.0之間的float資料類型的數字
duration 為動畫期間,時間以毫秒為單位
-->
<scale
android:interpolator=
"@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<!-- 尺寸伸縮動畫效果 scale
interpolator 指定一個動畫的插入器
幾種簡單的動畫插入器:
accelerate_decelerate_interpolator 先加速後減速,開始結束時慢,中間加速
accelerate_interpolator 加速,開始時慢中間加速
decelerate_interpolator 減速,開始時快然後減速
LinearInterpolator 線性,線性均勻改變
fromXScale 為動畫起始時 X座標上的伸縮尺寸
toXScale 為動畫結束時 X座標上的伸縮尺寸
fromYScale 為動畫起始時Y座標上的伸縮尺寸
toYScale 為動畫結束時Y座標上的伸縮尺寸
以上四種屬性值說明:
0.0表示收縮到沒有
1.0表示正常無伸縮
值小於1.0表示收縮
值大於1.0表示放大
pivotX 為動畫相對於物件的X座標的開始位置
pivotY 為動畫相對於物件的Y座標的開始位置
以上兩個屬性值 從0%-100%中取值,50%為物件的X或Y方向座標上的中點位置
duration 為動畫期間,時間以毫秒為單位
fillAfter 當設定為true ,控制項停放在動畫結束的位置
-->
<translate
android:fromXDelta="30"
android:toXDelta="-80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"
/>
<!-- translate 位置轉移動畫效果
fromXDelta 為動畫起始時 X座標上的位置
toXDelta 為動畫結束時 X座標上的位置
fromYDelta 為動畫起始時 Y座標上的位置
toYDelta 為動畫結束時 Y座標上的位置
沒有指定fromXType toXType fromYType toYType 時候,預設是以自己為相對參照物
duration 動畫期間,時間以毫秒為單位
-->
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />
<!-- rotate 旋轉動畫效果
interpolator 指定一個動畫的插入器
fromDegrees 為動畫起始時控制項的角度
toDegrees 為動畫結束時物件旋轉的角度 可以大於360度
當角度為負數——表示逆時針旋轉
當角度為正數——表示順時針旋轉
負數from——to正數:順時針旋轉)
(負數from——to負數:逆時針旋轉)
(正數from——to正數:順時針旋轉)
(正數from——to負數:逆時針旋轉)
pivotX 為動畫相對於物件的X座標的開始位置
pivotY 為動畫相對於物件的Y座標的開始位置
以上兩個屬性值 從0%-100%中取值
duration 為動畫期間,時間以毫秒為單位
-->
</set>
<?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"
/>
<!-- 透明度控制動畫效果 alpha
fromAlpha 為動畫起始時透明度
toAlpha 為動畫結束時透明度
取值說明: 0.0表示完全透明,1.0表示完全不透明,以上值取0.0-1.0之間的float資料類型的數字
duration 為動畫期間,時間以毫秒為單位
-->
<scale
android:interpolator=
"@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
<!-- 尺寸伸縮動畫效果 scale
interpolator 指定一個動畫的插入器
幾種簡單的動畫插入器:
accelerate_decelerate_interpolator 先加速後減速,開始結束時慢,中間加速
accelerate_interpolator 加速,開始時慢中間加速
decelerate_interpolator 減速,開始時快然後減速
LinearInterpolator 線性,線性均勻改變
fromXScale 為動畫起始時 X座標上的伸縮尺寸
toXScale 為動畫結束時 X座標上的伸縮尺寸
fromYScale 為動畫起始時Y座標上的伸縮尺寸
toYScale 為動畫結束時Y座標上的伸縮尺寸
以上四種屬性值說明:
0.0表示收縮到沒有
1.0表示正常無伸縮
值小於1.0表示收縮
值大於1.0表示放大
pivotX 為動畫相對於物件的X座標的開始位置
pivotY 為動畫相對於物件的Y座標的開始位置
以上兩個屬性值 從0%-100%中取值,50%為物件的X或Y方向座標上的中點位置
duration 為動畫期間,時間以毫秒為單位
fillAfter 當設定為true ,控制項停放在動畫結束的位置
-->
<translate
android:fromXDelta="30"
android:toXDelta="-80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"
/>
<!-- translate 位置轉移動畫效果
fromXDelta 為動畫起始時 X座標上的位置
toXDelta 為動畫結束時 X座標上的位置
fromYDelta 為動畫起始時 Y座標上的位置
toYDelta 為動畫結束時 Y座標上的位置
沒有指定fromXType toXType fromYType toYType 時候,預設是以自己為相對參照物
duration 動畫期間,時間以毫秒為單位
-->
<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />
<!-- rotate 旋轉動畫效果
interpolator 指定一個動畫的插入器
fromDegrees 為動畫起始時控制項的角度
toDegrees 為動畫結束時物件旋轉的角度 可以大於360度
當角度為負數——表示逆時針旋轉
當角度為正數——表示順時針旋轉
負數from——to正數:順時針旋轉)
(負數from——to負數:逆時針旋轉)
(正數from——to正數:順時針旋轉)
(正數from——to負數:逆時針旋轉)
pivotX 為動畫相對於物件的X座標的開始位置
pivotY 為動畫相對於物件的Y座標的開始位置
以上兩個屬性值 從0%-100%中取值
duration 為動畫期間,時間以毫秒為單位
-->
</set>
在Activity中的onCreate()方法中,擷取在XML中配置的動畫效果,代碼如下:
[java]
Animation animation= AnimationUtils.loadAnimation(this,R.anim.firstanim);
Animation animation= AnimationUtils.loadAnimation(this,R.anim.firstanim);
如果這個動畫效果使用在一個ImageView上,可以參考如下代碼:
[java]
imageView.startAnimation(animation);
imageView.startAnimation(animation);2.在Java代碼中設定方式:
以AlphaAnimation為例,
[java]
//首先聲明Animation的一個對象
private Animation alpha;
//在Activity的onCreate()方法中執行個體化這個對象
alpha=new AlphaAnimation(0.1f, 1.0f);
//設定動畫期間為3秒
alpha.setDuration(3000);
//首先聲明Animation的一個對象
private Animation alpha;
//在Activity的onCreate()方法中執行個體化這個對象
alpha=new AlphaAnimation(0.1f, 1.0f);
//設定動畫期間為3秒
alpha.setDuration(3000);
如果這個動畫效果使用在一個ImageView上,可以參考如下代碼:
[java]
imageView.startAnimation(alpha);
imageView.startAnimation(alpha);