android 簡單動畫之 animtion

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   io   使用   java   ar   

Android  簡單的動畫效果有Animtion 類提供 1.在XML中實現動畫效果;2.在java代碼中實現動畫效果。

動畫相關的屬性

表一:SET屬性
名稱 屬性 備忘
android:shareInterpolator 是否共用插入器 共用時,四個子節點都用一個插入器
android:interpolator 指定一個動畫的插入器 使用系統資源
android:fillEnabled
當設定為true時,fillAfter和fillBefroe將會都為true,此時會忽略fillBefore 和fillAfter兩種屬性
android:fillAfter 該動畫轉化是否在動畫結束後被應用 boolean
android:fillBefore 該動畫轉化是否在動畫開始前被應用 boolean
android:repeatMode 重複模式 "restart" =從頭開始 或者 "reverse"=從末尾開始
android:repeatCount 重複次數 integer -1為無限迴圈
android:duration 動畫期間 integer
android:startOffset 動畫時間間隔(動畫執行前停留時間) long
android:zAdjustment 定義動畫z order的變換 [normal] or [top] or [bottom]
android:detachWallpaper 未知 boolean
     
     


這裡詳細解釋下android:interpolator 動畫插入器屬性(動畫速度效果的體現)。

[email protected]:anim/accelerate_decelerate_interpolator:先加速後減速

[email protected]:anim/accelerate_interpolator :加速

[email protected]:anim/decelerate_interpolator:減速

[email protected]:anim/anticipate_interpolator:先往動畫移動的反方向移動一點然後在沿著設定的動畫移動  移動軌跡如。


5.anticipate_overshoot_interpolator:先往動畫的反方向移動一點,然後沿著設定的方向移動到終點之後繼續移動一點然後在回彈到最終設定的位置。如:


[email protected]:anim/bounce_interpolator:動畫移動到最後會有幾次回彈的效果,最終停止在設定的位置。

[email protected]:anim/cycle_interpolator:動畫周期移動。

[email protected]:anim/linear_interpolator:動畫勻速移動。

[email protected]:anim/overshoot_interpolator:動畫到最後的位置會向反方向移動一點。



Interpolator對象 資源ID 功能作用
AccelerateDecelerateInterpolator @android:anim/accelerate_decelerate_interpolator 先加速再減速
AccelerateInterpolator @android:anim/accelerate_interpolator 加速
AnticipateInterpolator @android:anim/anticipate_interpolator 先回退一小步然後加速前進
AnticipateOvershootInterpolator @android:anim/anticipate_overshoot_interpolator 在上一個基礎上超出終點一小步再回到終點
BounceInterpolator @android:anim/bounce_interpolator 最後階段彈球效果
CycleInterpolator @android:anim/cycle_interpolator 周期運動
DecelerateInterpolator @android:anim/decelerate_interpolator 減速
LinearInterpolator @android:anim/linear_interpolator 勻速
OvershootInterpolator @android:anim/overshoot_interpolator 快速到達終點並超出一小步最後回到終點
關於修改動畫插入器的屬性  給個連結:點擊開啟連結


表二:alpha
名稱 屬性 備忘
android:toAlpha 動畫結束時的透明度 float [0,1]  0表示完全透明 1表示完全不透明
android:duration 動畫期間 integer
android:fromAlpha 動畫開始時的透明度 float [0,1]  0表示完全透明 1表示完全不透明
     



表三:SCALE
名稱 屬性 備忘
android:fromXScale 動畫開始時,X座標上的伸縮尺寸 float,0.0表示收縮到沒有、1.0表示正常無伸縮,小於1表示收縮,大於1表示放大
android:toXScale 動畫結束時,X座標上的伸縮尺寸 同上
android:fromYScale 動畫開始時,Y座標上的伸縮尺寸 同上
android:toYScale 動畫結束時,Y座標上的伸縮尺寸 同上
android:pivotX 動畫相對於物件的X的開始位置 [0%,100%],50%表示中間
android:pivotY 動畫相對於物件的Y的開始位置 0%,100%],50%表示中間
android:duration 同set 同set
     

表四:TRANSLATE
名稱 屬性 備忘
android:fromXDelta 動畫開始時,X座標上的位置 integer  預設以自己為參照物
android:toXDelta 動畫結束時,X座標上的位置 integer  預設以自己為參照物
android:fromYDelta 動畫開始時,Y座標上的位置 integer  預設以自己為參照物
android:toYDelta 動畫結束時,Y座標上的位置 integer  預設以自己為參照物
     


表五:ROTATE
名稱 屬性 備忘
android:fromDegrees 動畫開始時,物件的角度 負數:逆時針旋轉,正數:順時針旋轉
android:toDegrees 動畫結束時,物件的角度(可大於360度) 同上
android:pivotX 動畫相對於物件的X的開始位置 [0%,100%],50%表示中間
android:pivotY 動畫相對於物件的Y的開始位置 [0%,100%],50%表示中間
   


一..XML 實現 alpha :

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    >    <alpha        android:duration="2000"        android:fromAlpha="0"        android:repeatCount="3"//動畫重複的次數        android:repeatMode="reverse"//動畫重複的模式  reverse:倒序,即從最後一幀播放動畫;  restart:順序,即從頭開始播放動畫        android:toAlpha="1.0" /></set>

幾個值得注意的地方:如果你需要讓動畫設定 android:fillAfter="true"
   android:fillBefore="false" 的相關屬性的時候 必須將屬性這是在<set>下面才有效。比如有效 設定是這樣的
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillAfter="true"   >    <alpha        android:duration="2000"        android:fromAlpha="0"                android:repeatCount="3"        android:repeatMode="reverse"        android:toAlpha="1.0" /></set>
那麼上面的動畫就停留在最後一幀畫面上。


二.代碼實現alpha  

Animation anim = new AlphaAnimation(0f, 1.0f);anim.setDuration(2000);anim.setRepeatCount(Animation.INFINITE);anim.setRepeatMode(Animation.RESTART);


三.XML實現scale

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillAfter="true"    android:interpolator="@android:anim/decelerate_interpolator" > <!-- 畫面停留在最後一幀 -->    >    <scale        android:duration="2000"        android:fromXScale="0.5"        android:fromYScale="0.5"        android:pivotX="50.0%" > <!-- 動畫相對於空間X座標開始的位置50。0%表示從空間的正中央開始縮放動畫 -->        android:pivotY="50.0%"        android:repeatCount="3"        android:repeatMode="reverse"        android:toXScale="1.0"        android:toYScale="1.0"         />    </scale></set>

四.代碼實現scale
Animation anim1 = new ScaleAnimation(0.5f, 1.0f, 0.5f, 1.0f, 0.5f, 0.5f);anim1.setDuration(2000);anim1.setRepeatCount(3);anim1.setRepeatMode(Animation.REVERSE);anim1.setInterpolator(this, interpolator.accelerate_decelerate);anim1.setFillAfter(true);

五.XML實現stranslate  

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:interpolator="@android:anim/decelerate_interpolator"    android:fillAfter="true" >    <translate        android:duration="2000"        android:fromXDelta="0"        android:fromYDelta="0"        android:toXDelta="0"        android:toYDelta="1080" /></set>


六代碼實現Stranslate

Animation animTranlate = new TranslateAnimation(0, 0, 0, 400);animTranlate.setDuration(2000);animTranlate.setFillAfter(true);animTranlate.setInterpolator(this, interpolator.bounce);text.startAnimation(animTranlate);


七.XML實現rotate 

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:fillAfter="true"    android:interpolator="@android:anim/accelerate_decelerate_interpolator" >    <rotate        android:duration="2000"        android:fromDegrees="0"        android:pivotX="50%"        android:pivotY="50%"        android:toDegrees="180" //負數就是逆時針,正數順時針。
/></set>
八.代碼實現rotate

Animation animRotate = new RotateAnimation(0f, 360f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);animRotate.setDuration(2000);animRotate.setInterpolator(this, interpolator.bounce);animRotate.setFillAfter(true);<span style="white-space:pre">animRotate.setStartOffset(2000);</span>//動畫執行前停留時間text.startAnimation(animRotate);

九.組合動畫的實現

<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"    android:duration="2000"    android:fillAfter="true"    android:interpolator="@android:anim/accelerate_decelerate_interpolator" >    <alpha        android:fromAlpha="0"        android:toAlpha="1.0" />    <scale        android:fromXScale="0"        android:fromYScale="0"        android:pivotX="50%"        android:pivotY="50%"        android:toXScale="1.0"        android:toYScale="1.0" /></set>


十.代碼實現組合動畫

Animation anim1 = new ScaleAnimation(0.5f, 1.0f, 0.5f, 1.0f, 0.5f, 0.5f);anim1.setDuration(2000);anim1.setRepeatCount(3);anim1.setRepeatMode(Animation.REVERSE);anim1.setInterpolator(this, interpolator.accelerate_decelerate);anim1.setFillAfter(true);// text.setAnimation(anim1);Animation animTranlate = new TranslateAnimation(0, 0, 0, 400);animTranlate.setDuration(2000);animTranlate.setFillAfter(true);animTranlate.setInterpolator(this, interpolator.bounce);// text.startAnimation(animTranlate);Animation animRotate = new RotateAnimation(0f, 360f,Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);animRotate.setDuration(2000);animRotate.setInterpolator(this, interpolator.bounce);animRotate.setFillAfter(true);// text.startAnimation(animRotate);AnimationSet animationSet = new AnimationSet(true);animationSet.addAnimation(animRotate);animationSet.addAnimation(animTranlate);animationSet.addAnimation(anim1);text.startAnimation(animationSet);

完結!

android 簡單動畫之 animtion

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.