android动画实现一张图自动旋转、可随时暂停、停止和重置,类似秒表指针旋转动画

项目需求:点击开始按钮,图片开始旋转,点击暂停,旋转暂停,位置不变,点击继续,图片从暂停的位置继续旋转,点击停止,图片位置重置;类似于秒表指针的旋转动画;

前言:一开始走了很多弯路,做出来的效果很差,后来查找资料找到了这样一个简单有效的方法,在此分享一下!

此方法的局限性:

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();

你可能感兴趣的:(android,UI适配,适配,小方法封装,个人积累,java程序)