1. 程式人生 > >Android動畫效果translate、scale、alpha、rotate詳解

Android動畫效果translate、scale、alpha、rotate詳解

動畫型別

Androidanimation由四種類型組成

XML
alpha 漸變透明度動畫效果
scale 漸變尺寸伸縮動畫效果
translate 畫面轉換位置移動動畫效果
rotate 畫面轉移旋轉動畫效果


JavaCode
AlphaAnimation 漸變透明度動畫效果
ScaleAnimation 漸變尺寸伸縮動畫效果
TranslateAnimation 畫面轉換位置移動動畫效果
RotateAnimation 畫面轉移旋轉動畫效果

Android動畫模式

Animation主要有兩種動畫模式

一種是tweened animation(漸變動畫)
XML JavaCode
alpha
AlphaAnimation
scale ScaleAnimation


一種是frame by frame(畫面轉換動畫)
XML中 JavaCode
translate TranslateAnimation
rotate RotateAnimation

Android動畫解析

alpha xml 淡出效果

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<alpha 
    android:fromAlpha="1.0"  
    android:toAlpha="0.0"  
    android:duration="500"  /> 
</set> 
<!--  
    fromAlpha:開始時透明度 
    toAlpha: 結束時透明度 
    duration:動畫持續時間 -->

alpha xml 淡入效果
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<alpha 
    android:fromAlpha="0.0"  
    android:toAlpha="1.0"  
    android:duration="500"  /> 
</set> 
<!--  
    fromAlpha:開始時透明度 
    toAlpha: 結束時透明度 
    duration:動畫持續時間 -->


rotate.xml 旋轉效果: 
<?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="300" 
	android:toDegrees="-360" 
	android:pivotX="10%" 
	android:pivotY="100%" 
	android:duration="10000" /> 
</set> 
<!--  
  fromDegrees  	動畫開始時的角度 
  toDegrees    	動畫結束時物件的旋轉角度,正代表順時針   
  pivotX  	屬性為動畫相對於物件的X座標的開始位置
  pivotY 	屬性為動畫相對於物件的Y座標的開始位置    --> 


scale.xml 縮放效果: 

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<scale   
	android:interpolator= "@android:anim/decelerate_interpolator"   	
	android:fromXScale="0.0"   
	android:toXScale="1.5"   
	android:fromYScale="0.0"   
	android:toYScale="1.5"   
	android:pivotX="50%"   
	android:pivotY="50%"   
	android:startOffset="0"   
	android:duration="10000"  
	android:repeatCount="1"   
	android:repeatMode="reverse"  /> 
</set> 

<!--  
fromXDelta,fromYDelta   	起始時X,Y座標,螢幕右下角的座標是X:320,Y:480 
toXDelta, toYDelta     	動畫結束時X,Y的座標 --> <!--  
interpolator                    指定動畫插入器
常見的有加速減速插入器	        accelerate_decelerate_interpolator
加速插入器		    	accelerate_interpolator,
減速插入器		    	decelerate_interpolator。 
fromXScale,fromYScale,         動畫開始前X,Y的縮放,0.0為不顯示,  1.0為正常大小
toXScale,toYScale,	        動畫最終縮放的倍數, 1.0為正常大小,大於1.0放大
pivotX,  pivotY	    	動畫起始位置,相對於螢幕的百分比,兩個都為50%表示動畫從螢幕中間開始 
startOffset,		    	動畫多次執行的間隔時間,如果只執行一次,執行前會暫停這段時間,
		    		單位毫秒 duration,一次動畫效果消耗的時間,單位毫秒,
		    		值越小動畫速度越快 repeatCount,動畫重複的計數,動畫將會執行該值+1次 
			    	repeatMode,動畫重複的模式,reverse為反向,當第偶次執行時,動畫方向會相反。
			    	restart為重新執行,方向不變 -->




translate.xml 移動效果: 
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate 
	android:fromXDelta="320" 
	android:toXDelta="0" 
	android:fromYDelta="480" 
	android:toYDelta="0" 
	android:duration="10000" /> 
</set> 
<!--  
fromXDelta,fromYDelta   起始時X,Y座標,螢幕右下角的座標是X:320,Y:480 
toXDelta, toYDelta     動畫結束時X,Y的座標 -->