在Android中,ViewPropertyAnimator、ObjectAnimator、ValueAnimator是实现属性动画的三种方式,ViewPropertyAnimator 和 ObjectAnimator 的内部实现其实都是 ValueAnimator。 属性动画的机制已经不是再针对于View而进行设计的了,而是一种不断地对值进行操作的机制,在决大多数的开发中,主要都还是对View进行动画操作的。 所以在Android 3.1系统当中补充了ViewPropertyAnimator这个机制,专门针对View来实现属性动画。 对于 ViewPropertyAnimator 通过View类的animate()方法来获取,从另一个角度 来描述 就是View类的animate()方法,其作用就是返回ViewPropertyAnimator的实例对象。 ViewPropertyAnimator 基本使用代码如下: //这里的 mImageView 就是执行动画的 View //获取ViewPropertyAnimator ViewPropertyAnimator lAnimator = mImageView.animate(); lAnimator.setDuration(2000); //线性动画插值器 lAnimator.setInterpolator(new LinearInterpolator()); //从0 向右移动 200 (相对View自己) lAnimator.translationX(200f); // //相对于上一次的位置移动 (初始是0) // lAnimator.translationXBy(300f); //// // //移动到指定位置 // lAnimator.x(200f); // //在当前位置 的基础上增加 // lAnimator.xBy(200f); lAnimator.setListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { Log.d("动画","动画开始"); } @Override public void onAnimationEnd(Animator animation) { Log.d("动画","动画结束"); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); lAnimator.setUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { Log.d("动画","动画执行中"+animation.getAnimatedValue()); } }); lAnimator.start();
translationX(200f)
translationXBy(300f)
lAnimator.x(200f) lAnimator.xBy(200f)
|