android PropertyAnimator 在API 11 过后才引入的 它完全可以替代 TweenAnimation
PropertyAnimator 分成两个类 ValueAnimator ObjectAnimator
ValueAnimator
看名字 就知道是 数值动画 就是然一个值 从多少 到多少, 只是将类似动画的效果用到了数值上面;
具体的作用本来是想写一篇 理解笔记的但是看到大牛写的一篇文章太详细了,我就不在写了,这里推荐出来
点击查看 : Animation——ValueAnimator基本使用
ObjectAnimator
ObjectAnimator其实是继承至ValueAnimator
public final class ObjectAnimator extends ValueAnimator三种方法 创建ObjectAnimator
1、 java 代码ObjectAnimator.ofXXX()的方式创建
//ivJack.getTranslationX(); //ivJack.setTranslationX(); // 就是凡是可以用set get方法得到的属性都可以进行 属性动画 //如果不确定 属性值的名字 就用set get 先尝试一下 ObjectAnimator tranX = ObjectAnimator.ofFloat(ivJack,"translationX",100,300,200,500); //就是 x坐标 先移动到100 再移动到300 再从300移动到200 再从200移动到500 tranX.setDuration(3000); //动画执行一次的时长 重复一次就再加一倍 tranX.setRepeatCount(1);//重复的次数 tranX.setRepeatMode(ObjectAnimator.RESTART);//重复的方式 tranX.setStartDelay(1000);//开始延时 tranX.start();
2、第二种方式 先创建 PropertyValuesHolder
PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("scaleX",2f,0.5f,1); PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("scaleY",2f,0.5f,1); ObjectAnimator ob = ObjectAnimator.ofPropertyValuesHolder(ivJack, p1, p2); ob.start();
3、第三种方式 通过创建xml 文件
//加载xml 文件中加载的动画 ObjectAnimator ro = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.rotate_animator); //补间动画用的是AnimationUtils 属性动画用的是AnimatorInflater ro.setTarget(ivJack); // 设置动画对象 ro.start();
还要有一个 AnimatorSet类
AnimatorSet set = new AnimatorSet(); set.playSequentially(animator1,animator2,animator3);//有序播放 // set.playTogether(animator1,animator2,animator3);//一起播放 // set.play(animater1).with(Animater2).after(animator3).before(animator4);// 自定义顺序播放 set.start();当然也可以通过xml代码生成