ObjectAnimator能力探究

自Android3.0以來,推出了屬性動畫的動畫機制,遍覽衆多安卓教材,大多對動畫機制重點講解還集中在幀動畫和補間動畫上,對屬性動畫要麼沒提要麼簡單帶過。其實據本人應用發現,屬性動畫不僅可以實現幀動畫和補間動畫,還可以實現非view對象的動畫。下面是寫的三種實現的demo,佈局如下——

點擊旋轉會旋轉最上面的textview,點擊圖片會播放小狗的動畫,點擊Button會改變自定義的抽象類的屬性。

對應的代碼如下:

public class AnimatorDemo extends Activity {
	TextView textView;
	ImageView img;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		textView=(TextView) findViewById(R.id.textView1);
		img=(ImageView) findViewById(R.id.imageView1);
	}
	
	public void swirl(View v){
		ObjectAnimator objAnimator=ObjectAnimator.ofFloat(textView, "rotation", 0,360);
		objAnimator.setDuration(2000);
		objAnimator.setRepeatCount(10);
		objAnimator.setInterpolator(new LinearInterpolator());
		objAnimator.start();
	}
	
	public void frame(View v){
		ObjectAnimator objectAnimator=ObjectAnimator.ofInt(img, "imageResource", R.drawable.img1,R.drawable.img13);
		objectAnimator.setDuration(1500);
		objectAnimator.setRepeatCount(ObjectAnimator.INFINITE);
		objectAnimator.setInterpolator(new LinearInterpolator());
		objectAnimator.start();
	}
	public void fall(View v){
		final Ball ball=new Ball();
		ObjectAnimator objectAnimator=ObjectAnimator.ofFloat(ball, "speed", 0,10,0);
		objectAnimator.setDuration(2000);
		objectAnimator.setInterpolator(new LinearInterpolator());
		objectAnimator.start();
		new Thread(){
			public void run() {
				try {
					for(int i=0;i<30;i++){
						Thread.sleep(100);
						Log.d("speed of ball", String.valueOf(ball.getSpeed()));
					}
				} catch (InterruptedException e) {
					Log.e("interupted", e.getLocalizedMessage());
				}
				
			};
		}.start();
	}
}
第三個方法中用到的實體類代碼極其簡單,一個屬性一對set和get方法而已

public class Ball {
	private float speed;

	public float getSpeed() {
		return speed;
	}

	public void setSpeed(float speed) {
		this.speed = speed;
	}

}
第三個抽象動畫的log結果:


如此可見,屬性動畫抽象出的本質是隨着時間改變對象屬性。所以只要提供一個對象一對get和set方法,都可以用屬性動畫來隨時間改變其屬性。


發佈了41 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章