本篇接上一篇: AnimatorSet的使用,将多个Animator组合进行动画 动画的监听
可见Animator是最上层的抽象类,定义了动画的基本操作,AnimatorSet、ValueAnimator作为子类,ObjectAnimator是ValueAnimator的子类
关系图.png可见Animator有两个内部接口,Animator.AnimatorListener和Animator.AnimatorPauseListener。 AnimatorListenerAdapter是AnimatorListener和AnimatorPauseListener的实现者,其中实现方法为空,也就是一个适配器,相当于两个接口的功能和。 AnimatorUpdateListener是ValueAnimator的接口,用于更新时回调
监听接口关系.png动画效果如下:抬起手时取消动画
动画监听.gif mTranslationX = translationX(); mTranslationX.setRepeatMode(ValueAnimator.REVERSE); mTranslationX.setRepeatCount(ValueAnimator.INFINITE); mTranslationX.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { //开始时设为绿色 setColor(Color.GREEN); } @Override public void onAnimationEnd(Animator animation) { //结束时设为蓝色 setColor(Color.BLUE); } @Override public void onAnimationCancel(Animator animation) { //取消是大小变为50 setCircleR(50); } @Override public void onAnimationRepeat(Animator animation) { //重复时设为随机色 setColor(ColUtils.randomColor()); } }); mTranslationX.start(); mTranslationX.cancel();//取消动画效果如下:点击运动,右滑暂停颜色变黄,下滑恢复颜色变蓝
暂停监听.gif mTranslationX.addPauseListener(new Animator.AnimatorPauseListener() { @Override public void onAnimationPause(Animator animation) { setColor(Color.YELLOW);//暂停黄色 } @Override public void onAnimationResume(Animator animation) { setColor(Color.BLUE);//恢复蓝色 } });效果如下:每当更新是将半径和位移联动
更新监听.gif mTranslationX.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { mCircleR = (Float) animation.getAnimatedValue(); invalidate(); } });下一篇将带来插值器与估值器的详细讲解
[1]本文由张风捷特烈原创,转载请注明 [2]欢迎广大编程爱好者共同交流 [3]个人能力有限,如有不正之处欢迎大家批评指证,必定虚心改正 [4]你的喜欢与支持将是我最大的动力
更多安卓技术欢迎访问:安卓技术栈 我的github地址:欢迎star 张风捷特烈个人网站,编程笔记请访问:http://www.toly1994.com
QQ:1981462002 邮箱:1981462002@qq.com 微信:zdl1994328
转载于:https://www.cnblogs.com/toly-top/p/9781875.html