项目有一个需求,有一个刷新按钮,上面放着一个常见的静止的刷新圆圈,如下图:

一旦用户按了刷新按钮,需要让这个刷新圆圈转动起来,让用户感觉到程序还在运行着,而不是卡死了。
有两个思路,一是将这个图按照旋转时间不同旋转成不同旋转角度的图片,就像要做一张gif图片一样,例如我要每次旋转30度,就需要360\30=12张图片,然后在anim文件夹下新建xml文件,内容如下:
1 | <animation-list xmlns:android="http://schemas.android.com/apk/res/android" |
在代码中这样写:
1 | AnimationDrawable rocketAnimation; |
具体代码含义参考: http://www.cnblogs.com/feisky/archive/2010/01/11/1644482.html
这种做法其实就是将每一帧图片都显示了一次,但是由于需要更多图片,文件体积会上升。
于是想到用rotate做单帧图片旋转,查到的资料: http://rainbowsu.iteye.com/blog/766608”
但是作者没能实现循环旋转,我尝试了下,修改了下anim文件的格式,成功了。
1 |
|
其中android:duration=”1000”表示旋转速率是1秒钟。
代码:
1 | package info.wegosoft; |
布局文件:
1 |
|
最后提供官方文档相关说明的链接: http://developer.android.com/guide/topics/resources/animation-resource.html
注意其中的匀速插值器LinearInterpolator似乎不能设置速率,我在这浪费了很多时间。
源代码下载:[LoadingAnimationTest.zip]
v1.5.2