Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 簡單動畫之 animtion

android 簡單動畫之 animtion

編輯:關於Android編程

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

\

動畫相關的屬性<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Cjx0YWJsZSBib3JkZXI9"1" width="1200" cellspacing="1" cellpadding="1"> 表一: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 動畫插入器屬性(動畫速度效果的體現)。

1.@android:anim/accelerate_decelerate_interpolator:先加速後減速

2.@android:anim/accelerate_interpolator :加速

3.@android:anim/decelerate_interpolator:減速

4.@android:anim/anticipate_interpolator:先往動畫移動的反方向移動一點然後在沿著設定的動畫移動 移動軌跡如下圖。


\

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


\

6.@android:anim/bounce_interpolator:動畫移動到最後會有幾次回彈的效果,最終停止在設定的位置。

7.@android:anim/cycle_interpolator:動畫周期移動。

8.@android:anim/linear_interpolator:動畫勻速移動。

9.@android: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 :



	
    


幾個值得注意的地方:如果你需要讓動畫設置 android:fillAfter="true"
android:fillBefore="false" 的相關屬性的時候 必須將屬性這是在下面才有效。比如有效的 設置是這樣的


	
    

那麼上面的動畫就停留在最後一幀畫面上。


二.代碼實現alpha

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


三.XML實現scale



 
    >

    
 
        android:pivotY="50.0%"
        android:repeatCount="3"
        android:repeatMode="reverse"
        android:toXScale="1.0"
        android:toYScale="1.0"
         />

    


四.代碼實現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




    


六代碼實現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




    
/>

八.代碼實現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);
		animRotate.setStartOffset(2000);//動畫執行前停留時間
		text.startAnimation(animRotate);

九.組合動畫的實現




    

    



十.代碼實現組合動畫

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);

完結!

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved