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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章