Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中TweenAnimation四種動畫切換效果

Android中TweenAnimation四種動畫切換效果

編輯:關於Android編程

點擊每個按鈕都會有對應的動畫顯示

 

\


activity代碼:

package com.tmacsky;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.AnimationUtils;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView;
public class AnimationDemoActivity extends Activity {
	private ImageView imageView;
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //定義四個動畫的button屬性
        imageView = (ImageView)findViewById(R.id.imageView);
        Button alpha = (Button)findViewById(R.id.Alpha);
        alpha.setOnClickListener(new AnimationClickListener(AnimationType.Alpha));
        Button rotate = (Button)findViewById(R.id.Rotate);
        rotate.setOnClickListener(new AnimationClickListener(AnimationType.Rotate));
        Button scale = (Button)findViewById(R.id.Scale);
        scale.setOnClickListener(new AnimationClickListener(AnimationType.Scale));
        Button translate = (Button)findViewById(R.id.Translate);
        translate.setOnClickListener(new AnimationClickListener(AnimationType.Translate));
        Button complex = (Button)findViewById(R.id.Complex);
        complex.setOnClickListener(new AnimationClickListener(AnimationType.Complex));
    }
    //定義animationType屬性
    enum AnimationType{
    	Alpha,
    	Rotate,
    	Scale,
    	Translate,
    	Complex
    }
    //定義一個函數
    class AnimationClickListener implements OnClickListener{
    	private AnimationType animationType;
    	public AnimationClickListener(AnimationType animType){
    		animationType = animType;
    	}
		public void onClick(View v) {
			// TODO Auto-generated method stub
			switch (animationType) {
			case Alpha:
				//定義漸變動畫,重復5次,持續1分鐘
				/*AlphaAnimation _animation = new AlphaAnimation(1f, 0.1f);
				_animation.setDuration(3000);
				_animation.setRepeatCount(5);
				//設置循環
				_animation.setRepeatMode(Animation.REVERSE);
				_animation.setAnimationListener(new AnimationListener() {
					//設置animation監聽,依次是啟動,重復,然後結束
					public void onAnimationStart(Animation animation) {
						// TODO Auto-generated method stub
						Log.i("log", "animation Start");
					}
					public void onAnimationRepeat(Animation animation) {
						// TODO Auto-generated method stub
						Log.i("log", "animation Repeat");	
					}
					public void onAnimationEnd(Animation animation) {
						// TODO Auto-generated method stub
						Log.i("log", "animation End");
					}
				});
				//啟動動畫
				imageView.startAnimation(_animation);*/
				AlphaAnimation alphaAnimation = (AlphaAnimation)AnimationUtils.loadAnimation(AnimationDemoActivity.this, R.anim.alpha);
				imageView.startAnimation(alphaAnimation);
				break;
			case Rotate:
				//定義旋轉動畫,旋轉一周持續1分鐘,重復三次,在物體的中心位置
				RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
				rotateAnimation.setDuration(3000);
				rotateAnimation.setRepeatCount(3);
				//啟動動畫
				imageView.startAnimation(rotateAnimation);
				break;
			case Scale:
				//定義縮放動畫,從中心坐標開始,縮放1.5倍大小,持續1分鐘,重復三次
				ScaleAnimation scaleAnimation = new ScaleAnimation(1, 1.5f, 1, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
				scaleAnimation.setDuration(3000);
				scaleAnimation.setRepeatCount(3);
				//啟動動畫
				imageView.startAnimation(scaleAnimation);
				break;
			case Translate:
				//定義移動動畫,都從自身坐標開始,移動2個位置,持續1分鐘,重復三次
				TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2);
				translateAnimation.setDuration(3000);
				translateAnimation.setRepeatCount(3);
				//啟動動畫
				imageView.startAnimation(translateAnimation);
				break;

			case Complex:
				//設置復雜的操作步驟,點擊按鈕complex後,會運行四種動畫效果疊加
				AnimationSet sets = new AnimationSet(false);
				//定義漸變動畫
				AlphaAnimation _animation1 = new AlphaAnimation(1f, 0.1f);
				_animation1.setDuration(3000);
				//定義旋轉動畫,在物體的中心位置
				RotateAnimation rotateAnimation1 = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
				rotateAnimation1.setDuration(3000);
				//定義縮放動畫,從中心坐標開始,縮放1.5倍大小
				ScaleAnimation scaleAnimation1 = new ScaleAnimation(1, 1.5f, 1, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
				scaleAnimation1.setDuration(3000);
				//定義移動動畫,都從自身坐標開始,移動2個位置
				TranslateAnimation translateAnimation1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2, Animation.RELATIVE_TO_SELF, 0, Animation.RELATIVE_TO_SELF, 2);
				translateAnimation1.setDuration(3000);
				//啟動動畫
                                sets.addAnimation(_animation1);
				sets.addAnimation(rotateAnimation1);
				sets.addAnimation(scaleAnimation1);
				sets.addAnimation(translateAnimation1);
				imageView.startAnimation(sets);
				break;
			default:
				break;
			}
		}
    }
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/qa" />
    <Button
        android:id="@+id/Alpha"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Alpha" />
    <Button
        android:id="@+id/Rotate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Rotate" />
    <Button
        android:id="@+id/Scale"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Scale" />
    <Button
        android:id="@+id/Translate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Translate" />
    <Button
        android:id="@+id/Complex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Complex" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<alpha 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromAlpha="1" android:toAlpha="0.3" android:duration="2000" android:repeatCount="3">
</alpha>


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved