博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中让View匀速旋转
阅读量:4986 次
发布时间:2019-06-12

本文共 1271 字,大约阅读时间需要 4 分钟。

项目需求,需要一个实现一个单帧的旋转动画,来提示当前进度,类似与圆圈型的progressbar

首先定义anim文件:

[html] 

1.     <rotate   

2.             android:interpolator="@android:anim/linear_interpolator"              

4.             android:fromDegrees="0"   

5.             android:toDegrees="+359"                         

7.             android:pivotX="50%"   

8.             android:pivotY="50%"       

9.             android:repeatMode="restart"  

10.          android:repeatCount="infinite"  

11.          android:duration="2000" />  

这就是以显示的图片问中心的无限旋转动画,然后对相应的组件使用该动画:这时我们发现效果不是匀速旋转,也就是说我们在xml里定义的android:interpolator="@android:anim/linear_interpolator"没有起到应有的作用,通过查找资料,发现该属性需要在代码里设定才能达到效果,于是实验了一下,发现确实如此,代码如下:

my_rotate.xml文件如下:

[html] 

1.     <rotate            

3.             android:fromDegrees="0"   

4.             android:toDegrees="+359"                         

6.             android:pivotX="50%"   

7.             android:pivotY="50%"       

8.             android:repeatMode="restart"  

9.             android:repeatCount="infinite"  

10.          android:duration="2000" />  

java代码如下:

[java] 

1.     Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate);         

2.     LinearInterpolator lir = new LinearInterpolator();    

3.     anim.setInterpolator(lir);   

4.     findViewById(R.id.test).startAnimation(anim);        

这时新问题又出现了,这个动画效果应因为定义的是无限循环的,当我们作为圆形的progressbar使用时没法停止该动画效果,即使我们在符合触发条件时把相应的控件设置为不可见,其动画效果依然在屏幕上旋转,该怎么办呢?

同样通过百度,我们发现android提供了一个clearAnimation()方法,用于动画的清除,这时在满足我们的progressbar停止条件时,我们让相应控件调用clearAnimation()方法,然后在将其设置为不可见就实现了类progressbar效果。

转载于:https://www.cnblogs.com/roccheung/p/5797451.html

你可能感兴趣的文章
新闻客户端的突破与创新
查看>>
网络通信引擎ICE的使用
查看>>
js滚动事件实现滚动触底加载
查看>>
(十)、iptables进行转发使内网能上网
查看>>
python之路《八》装饰器
查看>>
maven 打包前 Junit 测试
查看>>
spring boot 添加druid
查看>>
SQL联合查询
查看>>
dev 控件之 gridcontrid 应用
查看>>
什么是同一网段
查看>>
温故而知新
查看>>
c# 菱形,三角形
查看>>
java之MD5加密
查看>>
Codeforces Round #432 (Div. 2) ABC
查看>>
python跨行 print:多用(),换行符\要小心,少用+或者不用(其它程序代码跨行用\就行,不能用括号)...
查看>>
自己不懂的SQL语句用法
查看>>
C++ 函数指针
查看>>
.NET调用新浪微博开放平台接口的代码示例(转)
查看>>
四种百度文库资源直接下载的方法!不用代码,不用券!一键搞定!
查看>>
数据库-包和包体
查看>>