溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【移動開發(fā)】Android Animation 動畫效果總結(jié)

發(fā)布時間:2020-07-08 15:35:48 來源:網(wǎng)絡 閱讀:4270 作者:zhf651555765 欄目:開發(fā)技術(shù)

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
alphaAlphaAnimation
scaleScaleAnimation

一種是frame by frame(畫面轉(zhuǎn)換動畫)


XML中

JavaCode
translateTranslateAnimation
rotateRotateAnimation



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)


   恩恩!差不多完了,這樣看著爽多了哈~


向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI