1. 程式人生 > >開啟動畫效果——漸隱漸現效果

開啟動畫效果——漸隱漸現效果

啟動某項程式時我們往往都能看到不同的“開機動畫”,千變萬化的動畫也只不過是四種基本動畫衍變美化而成的。

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

最簡單的莫過於漸變透明效果,單單這一種就可完成漸隱漸現的動畫效果(用於漸現漸隱的可以是整個歡迎頁面也可以是歡迎頁面裡的一部分):

     1> 在res裡新建anim資料夾用來盛放動畫定義的動作檔案:

<set xmlns:android="http://schemas.android.com/apk/res/android"
        android:interpolator="@android:anim/accelerate_interpolator">
        <alpha 
            android:fromAlpha="0.0"
            android:toAlpha="1.0"
            android:duration="2000"/>
        <alpha 
            android:fromAlpha="1.0"
            android:toAlpha="0.0"
            android:startOffset="3000"
            android:duration="3000"/>
    
</set>
fromalpha即開始的透明度,toalpha即結束時的透明度,duration為時間(單位毫秒)。

     2>定義佈局檔案(layout):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/welcom_logo"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/welcome" />

</LinearLayout>

這裡和以往沒有任何不同,只需對要漸現漸隱的圖片進行id標示。

    3>實現方法(Activity):

public class WelcomeActivity extends Activity implements AnimationListener {
	private ImageView imageView = null;
	private Animation alphaAnimation = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_welcome);
		imageView = (ImageView) findViewById(R.id.welcom_logo);
		alphaAnimation = AnimationUtils.loadAnimation(this,
				R.anim.welcome_alpha);
		alphaAnimation.setFillEnabled(true);//啟動Fill保持
		alphaAnimation.setFillAfter(true);//設定動畫的最後一幀是保留在view上的
		imageView.setAnimation(alphaAnimation);
		alphaAnimation.setAnimationListener(this);

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_welcome, menu);
		return true;
	}

	@Override
	public void onAnimationEnd(Animation animation) {
		//動畫結束時結束歡迎頁面並跳轉到主頁面
		Intent intent=new Intent(this,GroupActivity.class);
		startActivity(intent);
		this.finish();

	}

	@Override
	public void onAnimationRepeat(Animation animation) {
		

	}

	@Override
	public void onAnimationStart(Animation animation) {
		

	}
	public boolean onKeyDown(int KeyCode,KeyEvent event){
		//在歡迎頁面遮蔽BACK鍵
		if(KeyCode==KeyEvent.KEYCODE_BACK){
			return false;
		}
		return false;
		
	}
}

歡迎頁面顧名思義只是裝飾作用一閃而過不需要返回鍵進行操作。