ValueAnimator valueAnimator是整个属性动画机制当中最核心的一个类。 简单使用 ValueAnimator anim = ValueAnimator.ofFloat(0f,1f); anim.setDuration(1000); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float current = (float) animation.getAnimatedValue(); Log.e(“TAG”,current+”“); } }); anim.start(); 从0 变成1的过程
valueAnimator最常用的方法就是ofFloat()、ofInt()、等还有ofObject(); 此外,还可以调用setStartDelay()方法来设置动画延迟播放的时间 调用setRepeatCount()和setRepeatMode()方法设置动画循环播放次数和循环播放模式, 循环模式包括RESTART和REVERSE两种,分别表示重新播放个倒叙播放的意思。
ObjectAnimator objectAbunator可以对任意对象的任意属性就行动画操作。 例如:把一个imgeView从常规变成透明 ObjectAnimator animator = ObjectAnimator.ofFloat(img,”alpha”,1.0f,0.0f); animator.setDuration(1000); animator.start(); 同理rotate translate scale 同样效果
组合动画 实现组合动画主要借助AnimatorSet这个类,提供了一个play()方法,如果向这个方法中传入一个Animator对象将会返回一个AnimatorSet.Builder的实例,Animatorset.Builder包括下面四个方法: 1.after(Animator anim)将现有动画插入到传入的动画之后执行 2.after(long delay) 将现有动画延迟指定毫秒后执行 3.before(Animator anim) 将现有动画插入到传入的动画之前执行 4.with(Animator anim) 将现有动画和传入的动画同时执行
ObjectAnimator moveIn = ObjectAnimator.ofFloat(img,"translationX",-500f,0f); ObjectAnimator rotate = ObjectAnimator.ofFloat(img,"rotate",0f,360f); ObjectAnimator fadeInout = ObjectAnimator.ofFloat(img,"alpha",1f,0f,1f); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.play(rotate).with(fadeInout).after(moveIn); animatorSet.setDuration(2000); animatorSet.start();Animator监听器 Animator提供了一个addListener()方法,这个方法接受一个AnimatorListener,只需要实现这个AnimatorListener就可以监听。
animatorSet.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) {
} @Override public void onAnimationEnd(Animator animation) { } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } });使用xml编写属性动画 首先在res目录下创建animtor文件夹,所有属性动画的文件都放在xml下 在xml文化中我们一共可使用以下三个标签: animator objectAnimator set 例1:实现一个从0-100的过度
新闻热点
疑难解答