Android-Animation動畫

Android -Animation動畫基礎

 

定義AnimationXML程序代碼

Animation動畫的四種類型

 

動畫模式

動畫效果

XML

代碼中

TweenAnimation

(漸變動畫)

漸變透明度

alpha 

AlphaAnimation 

漸變尺寸伸縮

scale

ScaleAnimation

FrameAnimation

(畫面轉換動畫)

畫面轉換位置移動

translate

TranslateAnimation

畫面轉移旋轉

rotate

RotateAnimation

 

一、在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>
每個元素表示不同的動畫效果

 

 

  Tween Animation共同的節點屬性:

 

屬性[類型]

功能

備註

Duration[long]

動畫持續時間

時間以毫秒爲單位

interpolator

指定一個動畫的插入器

accelerate_decelerate_interpolator
加速-減速
accelerate_interpolator  加速
decelerate_interpolator  減速

RepeatMode[int]

定義重複的行爲

1:重新開始 2plays backward

zAdjustment[int]

定義動畫的Z Order的改變

0:保持Z Order不變
1:保持在最上層
-1:保持在最下層

fillAfter[boolean]

當設置爲true ,該動畫轉化在動畫結束後被應用

fillBefore[boolean]

當設置爲true ,該動畫轉化在動畫開始前被應用

repeatCount[int]

動畫的重複次數

startOffset[long]

動畫之間的時間間隔,從上次動畫停多少時間開始執行下個動畫

 

 

XML節點功能說明

Alpha  漸變透明度動畫效果

<alpha
android:fromAlpha=”0.1″
android:toAlpha=”1.0″
android:duration=”3000″ />

fromAlpha

動畫起始時透明度

0.0表示完全透明
1.0表示完全不透明
取0.0-1.0之間的float數據類型的數字

duration爲動畫持續時間,ms單位

toAlpha

 

動畫結束時透明度

 

 

Scale  漸變尺寸伸縮動畫效果

<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:startOffset=“700”
android:duration=”700″
android:repeatCount=”10″ />

fromXScale[float] fromYScale[float]

動畫起始時,X、Y座標上的伸縮尺寸

0.0表示收縮到沒有
1.0表示正常無伸縮
值小於1.0表示收縮
值大於1.0表示放大

toXScale [float]
toYScale[float]

動畫結束時,X、Y座標上的伸縮尺寸

pivotX[float]
pivotY[float]

動畫相對於物件的X、Y座標的開始位置

從0%-100%中取值,50%爲物件的X或Y方向座標上的中點位置

 

 

Translate   畫面轉換位置移動動畫效果

<translate
android:fromXDelta=”30″
android:toXDelta=”-80″
android:fromYDelta=”30″
android:toYDelta=”300″
android:duration=”2000″ />

fromXDelta
toXDelta

動畫、結束起始時 X座標上的位置

fromYDelta
toYDelta

動畫、結束起始時 Y座標上的位置

 

 

Rotate   畫面轉移旋轉動畫效果

<rotate
android:interpolator=

”@android:anim/accelerate_decelerate_interpolator”
android:fromDegrees=”0″
android:toDegrees=”+350″
android:pivotX=”50%”
android:pivotY=”50%”
android:duration=”3000″ />

fromDegrees

動畫起始時物件的角度

當角度爲負數——表示逆時針旋轉
當角度爲正數——表示順時針旋轉
(負數from——to正數:順時針旋轉)
(負數from——to負數:逆時針旋轉)
(正數from——to正數:順時針旋轉)
(正數from——to負數:逆時針旋轉)

toDegrees

動畫結束時物件旋轉的角度,可以大於360度

pivotX
pivotY

動畫相對於物件的X、Y座標的開始位

從0%-100%中取值,50%爲物件的X或Y方向座標上的中點位置

 

 



  在Java代碼中實現XML中的動畫效果:

 

 

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

public class AnimationActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Animation animation = AnimationUtils.loadAnimation(this, R.anim.myanim);//使用AnimationUtils類的靜態方法loadAnimation()來加載XML中的動畫XML文件  
		
		ImageView imageView = (ImageView) findViewById(R.id.imageView);

		imageView.startAnimation(animation);//啓動動畫

	}
}

  
  public static Animation loadAnimation (Context context, int id)
  //第一個參數Context爲程序的上下文,第二個參數id爲動畫XML文件的引用。


二、Java代碼中定義動畫


//在代碼中定義 動畫實例對象
private Animation myAnimation_Alpha;
private Animation myAnimation_Scale;
private Animation myAnimation_Translate;
private Animation myAnimation_Rotate;

//根據各自的構造方法來初始化一個實例對象
myAnimation_Alpha=new AlphaAnimation(0.1f, 1.0f);


myAnimation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

myAnimation_Translate=new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);

myAnimation_Rotate=new RotateAnimation(0.0f, +350.0f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

 

<!--EndFragment-->

--------------------------------------------------------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章