问题小结(14)-旋转动画Rotate
16lz
2021-01-26
将近一个月没有写博文了,主要是这个月没有做什么有技术含量的工作,也就没做什么总结。
项目需求,需要一个实现一个单帧的旋转动画,来提示当前进度,类似与圆圈型的progressbar。
首先定义anim文件:
<rotate android:interpolator="@android:anim/linear_interpolator" android:fromDegrees="0" android:toDegrees="+359" android:pivotX="50%" android:pivotY="50%" android:repeatMode="restart" android:repeatCount="infinite" android:duration="2000" />
这就是以显示的图片问中心的无限旋转动画,然后对相应的组件使用该动画:这时我们发现效果不是匀速旋转,也就是说我们在xml里定义的android:interpolator="@android:anim/linear_interpolator"没有起到应有的作用,通过查找资料,发现该属性需要在代码里设定才能达到效果,于是实验了一下,发现确实如此,代码如下:
my_rotate.xml文件如下:
<rotate android:fromDegrees="0" android:toDegrees="+359" android:pivotX="50%" android:pivotY="50%" android:repeatMode="restart" android:repeatCount="infinite" android:duration="2000" />
java代码如下:
Animation anim = AnimationUtils.loadAnimation(this, R.anim.my_rotate); LinearInterpolator lir = new LinearInterpolator(); anim.setInterpolator(lir); findViewById(R.id.test).startAnimation(anim);
这时新问题又出现了,这个动画效果应因为定义的是无限循环的,当我们作为圆形的progressbar使用时没法停止该动画效果,即使我们在符合触发条件时把相应的控件设置为不可见,其动画效果依然在屏幕上旋转,该怎么办呢?
同样通过百度,我们发现android提供了一个clearAnimation()方法,用于动画的清除,这时在满足我们的progressbar停止条件时,我们让相应控件调用clearAnimation()方法,然后在将其设置为不可见就实现了类progressbar效果。
更多相关文章
- Android(安卓)TextView更换字体
- Android(安卓)tools & sample data: Make preview great again
- Android(安卓)UI设计之自定义SwitchButton开关,实现类似IOS中UISw
- 仿小米和iphone日历效果,基于Android(安卓)week view
- Android使用ViewPager实现左右循环滑动及轮播效果
- Android利用RecyclerView实现列表倒计时效果
- Android实现中轴旋转特效 Android制作别样的图片浏览器
- android CircularSeekBar
- Android(安卓)仿 窗帘效果 和 登录界面拖动效果 (Scroller类的应