Android動畫解析1


       3.0以前,android支持兩種動畫模式,補間動畫(tween animation),幀動畫(frame animation),在android3.0中又引入了一個新的動畫系統:屬性動畫(property animation)。今天先主要說一下補間動畫

       補間動畫我們直接成爲View動畫,他包含四種變換

                 平移動畫 TranslationAnimation

                 縮放動畫 ScaleAnimation

                 旋轉動畫 RotateAnimation

                 透明度動畫 AlphaAnimation

        這四種動畫創建方式有倆種,一種是通過代碼動態創建,另一種是採用XML來定義動畫,對於View動畫來說,一般建議採用XML來實現,這是應爲XML格式的動畫擁有更好的可讀性。

        創建View動畫,首先創建XML文件,在res/anim/下創建XML文件,一個有五種標籤可選,四中動畫變化以及一種集合變換,View動畫既可以單獨採用一種動畫,也可以採用set標籤創建一系列動畫。

        在創建動畫是,有一個屬性是android:interpolator,表示動畫的插值器,用於管理動畫的速度,如,加速、減速等,系統默認的是加速減速加值器accelerate_decelerate_interpolator;除此以外,還有一個屬性是android:shareInterpolator,他表示動畫是否與幾何使用同一個插值器。

        tranlationanimation,屏移動畫。新建translate標籤,完成以下幾個重要屬性

                android:fromXDelta="0"---表示X的起始值
                android:fromYDelta="0"---表示Y的起始值
                android:toXDelta="500"---表示X的結束值
                android:duration="2000"----表示時長
                android:toYDelta="500"----表示Y的結束值

       

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXDelta="0"
    android:fromYDelta="0"
    android:toXDelta="500"
    android:duration="2000"
    android:toYDelta="500">
</translate>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fillAfter="true"動畫是都停留在結束<span style="font-family:微軟雅黑;">位置</span>
    android:duration="2000"
    android:shareInterpolator="true">
    <span style="font-family:微軟雅黑;"><!--起始透明度,終止透明度--></span>
    <alpha 
    	android:fromAlpha="1"
    	android:toAlpha="0.1">
	</alpha>
<pre name="code" class="java"><span style="font-family:微軟雅黑;"><!--起始角度,終止角度,軸心是view中心--></span>   
<rotate android:fromDegrees="0" android:toDegrees="359" android:pivotX="0" android:pivotY="0"></rotate><scale android:fromXScale="0.1" android:toXScale="1.5" android:fromYScale="0.1" android:toYScale="1.5"> </scale> <translate android:fromXDelta="0" android:fromYDelta="0" android:toXDelta="500" android:toYDelta="500"></translate></set>

在應用中,通過AnimationUtils找到相應的動畫,在用添加動畫的控件啓動該動畫

        animation_alpha = AnimationUtils.loadAnimation(this, R.anim.animation_alpha);      
<span style="font-family:微軟雅黑;">          </span>  animation_rotate = AnimationUtils.loadAnimation(this, R.anim.animation_rotate);  
<span style="font-family:微軟雅黑;">   </span>      animation_scale = AnimationUtils.loadAnimation(this, R.anim.animation_scale);        
<span style="font-family:微軟雅黑;">             </span>animation_set = AnimationUtils.loadAnimation(this, R.anim.animation_set);        
<span style="font-family:微軟雅黑;">             </span>animation_trans = AnimationUtils.loadAnimation(this, R.anim.animation_trans);


@Override
	public void onClick(View v) {
		if (v.getId()==R.id.btn_alpha){
			iv.startAnimation(animation_alpha);
		}else if (v.getId()==R.id.btn_translate){
			iv.startAnimation(animation_trans);
		}else if (v.getId()==R.id.btn_rotate){
			iv.startAnimation(animation_rotate);
		}else if (v.getId()==R.id.btn_set){
			iv.startAnimation(animation_set);
		}else if (v.getId()==R.id.btn_scale){
			iv.startAnimation(animation_scale);
		}
	}

通過XML文件來實現動畫已經完成了,接下來使用代碼來完成

		AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
		alphaAnimation.setDuration(1000);
		iv.startAnimation(alphaAnimation);
		TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 500);
		translateAnimation.setDuration(1000);
		iv.startAnimation(translateAnimation);

其他動畫同理。


效果圖如下:



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