您好,登錄后才能下訂單哦!
1.Android的animation由四種類型組成:
XML中
alpha | 漸變透明度動畫效果 |
scale | 漸變尺寸伸縮動畫效果 |
translate | 畫面轉(zhuǎn)換位置移動動畫效果 |
rotate | 畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果 |
JavaCode中
AlphaAnimation | 漸變透明度動畫效果 |
ScaleAnimation | 漸變尺寸伸縮動畫效果 |
TranslateAnimation | 畫面轉(zhuǎn)換位置移動動畫效果 |
RotateAnimation | 畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果 |
2.Animation主要有兩種動畫模式:
一種是tweened animation(漸變動畫)
XML中 | JavaCode |
alpha | AlphaAnimation |
scale | ScaleAnimation |
一種是frame by frame(畫面轉(zhuǎn)換動畫)
XML中 | JavaCode |
translate | TranslateAnimation |
rotate | RotateAnimation |
3.如何在XML文件中定義動畫
① 打開Eclipse,新建Android工程
② 在res目錄中新建anim文件夾
③ 在anim目錄中新建一個myanim.xml(注意文件名小寫)
④ 加入XML的動畫代碼
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <alpha/> <scale/> <translate/> <rotate/> </set>
4.Android動畫解析--XML
<alpha> 透明度
<?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(浮點型值) 屬性為動畫起始時透明度, 0.0表示完全透明
toAlpha(浮點型值) 屬性為動畫結(jié)束時透明度, 1.0表示完全不透明.
fromAlpha 和 toAlpha 的取值在0.0-1.0之間的float數(shù)據(jù)類型的數(shù)字
duration(長整型值) 屬性為動畫持續(xù)時間,時間以毫秒為單位
<scale> 縮放
<?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.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" /> </set>
注釋:
interpolator 指定一個動畫的插入器在我試驗過程中,使用android.res.anim中的資源時候發(fā)現(xiàn)有三種動畫插入器:
accelerate_decelerate_interpolator 加速-減速 動畫插入器
accelerate_interpolator 加速-動畫插入器
decelerate_interpolator 減速- 動畫插入器
其他的屬于特定的動畫效果
A.浮點型值:
fromXScale 屬性為動畫起始時 X坐標上的伸縮尺寸
toXScale 屬性為動畫結(jié)束時 X坐標上的伸縮尺寸
fromYScale 屬性為動畫起始時Y坐標上的伸縮尺寸
toYScale 屬性為動畫結(jié)束時Y坐標上的伸縮尺寸
說明:
0.0表示收縮到?jīng)]有,1.0表示正常無伸縮
值小于1.0表示收縮,值大于1.0表示放大
pivotX 屬性為動畫相對于物件的X坐標的開始位置
pivotY 屬性為動畫相對于物件的Y坐標的開始位置
說明:
以上兩個屬性值 從0%-100%中取值
50%為物件的X或Y方向坐標上的中點位置
B.長整型值:
duration 屬性為動畫持續(xù)時間
說明: 時間以毫秒為單位
C.布爾型值:
fillAfter 屬性 當設置為true ,該動畫轉(zhuǎn)化在動畫結(jié)束后被應用
<translate> 移動
<?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 屬性為動畫起始時 X坐標上的位置
toXDelta 屬性為動畫結(jié)束時 X坐標上的位置
fromYDelta 屬性為動畫起始時 Y坐標上的位置
toYDelta 屬性為動畫結(jié)束時 Y坐標上的位置
注意:
沒有指定fromXType toXType fromYType toYType 時候,默認是以自己為相對參照物
長整型值:
duration 屬性為動畫持續(xù)時間,時間以毫秒為單位
<rotate> 旋轉(zhuǎn)
<?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>
注釋:
屬性:interpolator 指定一個動畫的插入器有三種動畫插入器:
accelerate_decelerate_interpolator 加速-減速 動畫插入器
accelerate_interpolator 加速-動畫插入器
decelerate_interpolator 減速- 動畫插入器
其他的屬于特定的動畫效果
A.浮點數(shù)型值:
fromDegrees 屬性為動畫起始時物件的角度
toDegrees 屬性為動畫結(jié)束時物件旋轉(zhuǎn)的角度 可以大于360度
說明:
當角度為負數(shù)——表示逆時針旋轉(zhuǎn)
當角度為正數(shù)——表示順時針旋轉(zhuǎn)
(負數(shù)from——to正數(shù):順時針旋轉(zhuǎn))
(負數(shù)from——to負數(shù):逆時針旋轉(zhuǎn))
(正數(shù)from——to正數(shù):順時針旋轉(zhuǎn))
(正數(shù)from——to負數(shù):逆時針旋轉(zhuǎn))
pivotX 屬性為動畫相對于物件的X坐標的開始位置
pivotY 屬性為動畫相對于物件的Y坐標的開始位置
說明: 以上兩個屬性值 從0%-100%中取值,50%為物件的X或Y方向坐標上的中點位置
B.長整型值:
duration 屬性為動畫持續(xù)時間,時間以毫秒為單位
如何使用XML中的動畫效果
/** *Context 為程序的上下文 *id 為動畫XML文件的引用 **/ public static Animation loadAnimation (Context context, int id) //例子: myAnimation= AnimationUtils.loadAnimation(this,R.anim.my_action); //使用AnimationUtils類的靜態(tài)方法loadAnimation()來加載XML中的動畫XML文件
5.Android動畫解析--JavaCode
A.AlphaAnimation
① AlphaAnimation類對象定義
private AlphaAnimation myAnimation_Alpha;
② AlphaAnimation類對象構(gòu)造
AlphaAnimation(float fromAlpha, float toAlpha) //第一個參數(shù)fromAlpha為 動畫開始時候透明度 //第二個參數(shù)toAlpha為 動畫結(jié)束時候透明度 myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f); //說明: // 0.0表示完全透明 // 1.0表示完全不透明
myAnimation_Alpha.setDuration(5000); //設置時間持續(xù)時間為 5000毫秒
③ 設置動畫持續(xù)時間
myAnimation_Alpha.setDuration(5000); //設置時間持續(xù)時間為 5000毫秒
B.ScaleAnimation
① ScaleAnimation類對象定義
private AlphaAnimation myAnimation_Alpha;
② ScaleAnimation類對象構(gòu)造
ScaleAnimation(float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) //第一個參數(shù)fromX為動畫起始時 X坐標上的伸縮尺寸 //第二個參數(shù)toX為動畫結(jié)束時 X坐標上的伸縮尺寸 //第三個參數(shù)fromY為動畫起始時Y坐標上的伸縮尺寸 //第四個參數(shù)toY為動畫結(jié)束時Y坐標上的伸縮尺寸 /*說明: 以上四種屬性值 0.0表示收縮到?jīng)]有 1.0表示正常無伸縮 值小于1.0表示收縮 值大于1.0表示放大 */ //第五個參數(shù)pivotXType為動畫在X軸相對于物件位置類型 //第六個參數(shù)pivotXValue為動畫相對于物件的X坐標的開始位置 //第七個參數(shù)pivotXType為動畫在Y軸相對于物件位置類型 //第八個參數(shù)pivotYValue為動畫相對于物件的Y坐標的開始位置 myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
③ 設置動畫持續(xù)時間
myAnimation_Scale.setDuration(700); //設置時間持續(xù)時間為 700毫秒
C.TranslateAnimation
① TranslateAnimation類對象定義
private AlphaAnimation myAnimation_Alpha;
② TranslateAnimation類對象構(gòu)造
TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) //第一個參數(shù)fromXDelta為動畫起始時 X坐標上的移動位置 //第二個參數(shù)toXDelta為動畫結(jié)束時 X坐標上的移動位置 //第三個參數(shù)fromYDelta為動畫起始時Y坐標上的移動位置 //第四個參數(shù)toYDelta為動畫結(jié)束時Y坐標上的移動位置
③ 設置動畫持續(xù)時間
myAnimation_Translate.setDuration(2000); //設置時間持續(xù)時間為 2000毫秒
D.RotateAnimation
① RotateAnimation類對象定義
private AlphaAnimation myAnimation_Alpha;
② RotateAnimation類對象構(gòu)造
RotateAnimation(float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) //第一個參數(shù)fromDegrees為動畫起始時的旋轉(zhuǎn)角度 //第二個參數(shù)toDegrees為動畫旋轉(zhuǎn)到的角度 //第三個參數(shù)pivotXType為動畫在X軸相對于物件位置類型 //第四個參數(shù)pivotXValue為動畫相對于物件的X坐標的開始位置 //第五個參數(shù)pivotXType為動畫在Y軸相對于物件位置類型 //第六個參數(shù)pivotYValue為動畫相對于物件的Y坐標的開始位置 myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);
③ 設置動畫持續(xù)時間
myAnimation_Rotate.setDuration(3000); //設置時間持續(xù)時間為 3000毫秒
如何使用Java代碼中的動畫效果
使用從View父類繼承過來的方法startAnimation()來為View或是子類View等等添加一個動畫效果
public void startAnimation (Animation animation)
恩恩!差不多完了,這樣看著爽多了哈~
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。