Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 一般動畫animation和屬性動畫animator

Android 一般動畫animation和屬性動畫animator

編輯:關於Android編程

package com.example.animation;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	
	}
    
	public void click(View view){
		Toast.makeText(this, "click", Toast.LENGTH_SHORT).show();
	} 
	
	public void move(View view ){
		float fromXDelta=0;
		float toXDelta=0;
		float fromYDelta=0;
		float toYDelta=200;
		TranslateAnimation animation = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta);
		/**
		 * time
		 */
		animation.setDuration(1000);
		animation.setFillAfter(true);
		ImageView imageView=(ImageView)findViewById(R.id.imageView);
		imageView.startAnimation(animation);
	}
     
}

這是一般動畫,再看屬性動畫

區別:一般動畫變換後只是圖片移動了,view的位置不變,然而屬性動畫view隨著圖片移動。

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);
		ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
	}

多種動畫同時進行

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);
		ObjectAnimator.ofFloat(imageView, "translationY", 0f,200f).setDuration(1000).start();
		ObjectAnimator.ofFloat(imageView, "translationX", 0f,200f).setDuration(1000).start();
		ObjectAnimator.ofFloat(imageView, "rotation", 0,360f).setDuration(1000).start();
	}
Google提供了一種更節省系統資源的多種動畫同時播放

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);

		PropertyValuesHolder p1=PropertyValuesHolder.ofFloat("rotation", 0,360f);
		PropertyValuesHolder p2=PropertyValuesHolder.ofFloat("translationX", 0f,200f);
		PropertyValuesHolder p3=PropertyValuesHolder.ofFloat("translationY", 0f,200f);
		ObjectAnimator.ofPropertyValuesHolder(imageView, p1,p2,p3).setDuration(1000).start();
	}
同時Google提供了animatorset,允許多種不同動畫按照用戶要求播放,如使用set.palyTpgether() set.playSequentially()

	public void move(View view ){

		ImageView imageView=(ImageView)findViewById(R.id.imageView);


		ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView, "rotation", 0,360f);
		ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView, "translationX", 0,200f);
		ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView, "translationY", 0,200f);
	
		AnimatorSet set=new AnimatorSet();
		//set.playTogether(animator1,animator2,animator3);
		set.playSequentially(animator1,animator2,animator3);
		set.setDuration(1000);
		set.start();
	}





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