本文同步发表于我的微信公众号,在微信搜索 不要注水 即可关注。
自定义 View 添加动画效果
今天看教程的时候看到了自定义 View 添加动画效果的方法,通过属性动画获取值,然后设置到自定义 View 中即可。
部分代码如下:
// 属性动画
ValueAnimator valueAnimator = ObjectAnimator.ofFloat(0, 3000);
valueAnimator.setDuration(1000);
valueAnimator.setInterpolator(new DecelerateInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override public void onAnimationUpdate(ValueAnimator animation) {
float currentStep = (float) animation.getAnimatedValue();
step_view.setCurrentStep((int) currentStep);
}
});
valueAnimator.start();
可以看到,获取了一个 ValueAnimator 后,设置了持续时间,动画插值器,通过接口收到这个属性变化的回调,然后在回调里面设置到我们的自定义 View 就可以实现了。
这里面的设置回调方法我们可以点进去看一下,代码如下:
public void addUpdateListener(AnimatorUpdateListener listener) {
if (mUpdateListeners == null) {
mUpdateListeners = new ArrayList<AnimatorUpdateListener>();
}
mUpdateListeners.add(listener);
}
可以看到,这里的回调接口是通过一个 list 保存起来了,从方法名也可以看出来,这样我们就可以设置多个接受数值变化的回调了。而一般回调接口方法是 setListener 之类的,大部分都是只有一个回调方法,重复设置的话只会是最新一个生效,这在开发中需要注意。
PS 今天加班上线,这篇分享写完还要继续加班。