项目需求:点击开始按钮,图片开始旋转,点击暂停,旋转暂停,位置不变,点击继续,图片从暂停的位置继续旋转,点击停止,图片位置重置;类似于秒表指针的旋转动画;
前言:一开始走了很多弯路,做出来的效果很差,后来查找资料找到了这样一个简单有效的方法,在此分享一下!
此方法的局限性:
1.对API有要求,必须要 API >= 19,如遇到红色波浪线报 API 的错误,可在方法前加上这句话: @TargetApi(Build.VERSION_CODES.KITKAT)
2.本例中设置的60秒转360度应该是很准确才对,但是不知道为啥,转一整圈只需要59秒,有时候不到59秒,很奇怪,可能是对动画属性值的设置哈没完全弄懂,如果有懂的朋友可以留言告诉我,不胜感激!
准备好图片资源,写好布局和点击事件之后,接下来就是实现动画:
1.定义成员变量,本例使用的是 ObjectAnimator;
private ObjectAnimator mCircleAnimator;
private ImageView mDynamicCircle;
2.初始化,对于旋转的角度、旋转周期、旋转动画的插值器等属性大家可以自己 DIY,在此就不赘述了;
mDynamicCircle = (ImageView) findViewById(R.id.record_wav_main_dynamic_circle);
mCircleAnimator = ObjectAnimator.ofFloat(mDynamicCircle, "rotation", 0.0f, 360.0f);
mCircleAnimator.setDuration(60000);
mCircleAnimator.setInterpolator(new LinearInterpolator());
mCircleAnimator.setRepeatCount(-1);
mCircleAnimator.setRepeatMode(ObjectAnimator.RESTART);
3.开始旋转:
mCircleAnimator.start();
4.暂停旋转:
mCircleAnimator.pause();
5.继续旋转:
mCircleAnimator.resume();
6.停止旋转并重置:
mCircleAnimator.end();