天天看點

Android動畫Animation的兩種加載執行方式

本文以簡單的AlphaAnimation(“淡入淡出(透明度改變)”動畫)為例,簡單的說明Android動畫Animation的兩種加載執行方法:

(1) 直接寫Java代碼,制作Android動畫。

(2) 寫XML配置檔案,加載XML資源檔案執行。

其實這兩者是一緻的。要知道,在Android中,凡是可以在XML檔案完成的View,代碼亦可完全寫出來。

現在先給出一個Java代碼完成的動畫AlphaAnimation,AlphaAnimation功能簡單,簡言之,可以讓一個View在一個給定時間内從一個透明度變成另外一個透明度。0.0f是完全透明,1.0f是完全不透明。

A。第一種做法,寫Java代碼實作。

測試用的主Activity很簡單,就一個居中顯示的TextView,顯示一串文字:Android動畫,該TextView啟動後在3秒内從完全透明漸變到完全不透明。MainActivity.java :

package zhangphil.animation;

import android.app.Activity;
import android.os.Bundle;
import android.view.animation.AlphaAnimation;
import android.view.animation.AnimationSet;
import android.widget.TextView;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);
		TextView text = (TextView) findViewById(R.id.text);

		// “淡入淡出”動畫。
		// 0.0f,完全透明,
		// 1.0f,完全不透明。
		AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
		alphaAnimation.setDuration(3000);

		// 動畫集。
		AnimationSet animationSet = new AnimationSet(false);
		animationSet.addAnimation(alphaAnimation);

		// 開始播放動畫。
		text.startAnimation(animationSet);
	}
}           

MainActivity.java需要的activity_main.xml布局檔案:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:gravity="center"
        android:textSize="30sp"
        android:text="Android動畫" />

</RelativeLayout>
           

這是第一種Java代碼寫法。

B。第二種做法,寫XML檔案實作。

介紹第二種XML寫法。MainAvtivity.java:

package zhangphil.animation;

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

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		TextView text = (TextView) findViewById(R.id.text);

		// 初始化需要加載的動畫資源
		Animation animation = AnimationUtils
				.loadAnimation(this, R.anim.my_anim);

		// 将TextView執行Animation動畫
		text.startAnimation(animation);
	}
}           

MainActivity.java需要的activity_main.xml檔案不做任何修改和上述的A相同。

複雜代碼工作轉嫁到定義anim的XML。

一,需要在res/目錄下建立一個anim檔案夾,在裡面建立一個Android資源檔案,假設這個名字自定義為my_anim.xml。目錄結構層次如圖所示:

二,完成動畫所需要的控制要素集代碼,my_anim.xml具體代碼:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >

    <alpha
        android:duration="3000"
        android:fromAlpha="0"
        android:toAlpha="1.0" />
    <!--
        透明度控制動畫效果 alpha
        浮點型值:
            fromAlpha 動畫起始時透明度
            toAlpha   動畫結束時透明度
            說明: 
                0.0表示完全透明
                1.0表示完全不透明
            以上值取0.0-1.0之間的float資料類型的數字
        
        整數:
            duration  動畫持續時間
            說明:     
                時間以毫秒為機關
    -->
</set>           

繼續閱讀