摘要:资源加载完成后,又切换回静态效果。分别是种,个动画,个进度条底座。使用,叠加多层效果。定义旋转效果。定义进度条的样式。离开页面时记得关闭动画小结小结要实现转圈的效果。主要还是直接操作对象,把动画加进去。做出更丰富的效果。
某些音乐播放或者视频播放的界面上,资源还在加载时,进度条的原点(thumb)会显示一个转圈的效果。
资源加载完成后,又切换回静态效果。这个效果增强了用户体验。
一般来说有美术人员负责设计和切图。尝试实现时,我们可以使用使用drawable,来模拟实现这个转圈的效果。
为方便管理,可以添加一些尺寸设置
6dp 2dp 20dp 4dp
我们一共要添加4个drawable文件。分别是2种thumb,1个动画,1个进度条“底座”。
shape_thumb_round_1.xml # 静态thumblayers_seek_bar_progress_1.xmllayers_thumb_ring_sweep_1.xmlrotate_thumb_1.xml
用solid和stroke做出的圆环效果
这是准备拿来转圈的thumb。使用layer-list,叠加多层效果。
底部是一个半白色的圆(android:shape="oval"
)。
再叠加上一层圆环(android:shape="ring"
),使用了渐变色,增加动感。
-
-
定义旋转效果。注意它的drawable
使用了上面定义的layers_thumb_ring_sweep_1.xml。
旋转参数android:toDegrees
可以根据需求定义。
定义进度条的样式。这个是“底座”。颜色要和上面的匹配,看起来好看一点。
-
-
-
上面的资源文件准备完毕后。在我们的布局中添加一个SeekBar
android:maxHeight
和android:minHeight
需要设置android:progressDrawable
用前面定义好的“底座”android:thumb
先使用静态的样式
由Activity来持有Drawable变量和动画。例子中使用了dataBinding。
private RotateDrawable mRotateThumbDrawable; // 加载中的thumb,由Activity来持有这个drawableprivate Drawable mSolidThumb;private ObjectAnimator mThumbAnimator; // 控制动画// ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBinding = DataBindingUtil.setContentView(this, R.layout.act_seekbar_1);// ... mRotateThumbDrawable = (RotateDrawable) AppCompatResources.getDrawable(getApplicationContext(), R.drawable.rotate_thumb_1); mSolidThumb = AppCompatResources.getDrawable(getApplicationContext(), R.drawable.shape_thumb_round_1); }
Drawable对象由activity直接持有,操作起来比较方便。
改变seekbar的thumb,使用方法setThumb(Drawable thumb)
使用静态的thumb
mBinding.playSb.setThumb(mSolidThumb);
使用转圈圈的效果,先setThumb
,并且需要启动动画
mBinding.playSb.setThumb(mRotateThumbDrawable);mThumbAnimator = ObjectAnimator.ofInt(mRotateThumbDrawable, "level", 0, 10000);mThumbAnimator.setDuration(1000);mThumbAnimator.setRepeatCount(ValueAnimator.INFINITE);mThumbAnimator.setInterpolator(new LinearInterpolator());mThumbAnimator.start();
效果如下图
可以在静态和动态之间相互切换。
离开页面时记得关闭动画
@Overrideprotected void onDestroy() { if (null != mThumbAnimator) { mThumbAnimator.cancel(); } super.onDestroy();}
要实现转圈的效果。主要还是直接操作drawable对象,把动画加进去。
setThumb(Drawable thumb)
方法接受的是Drawable对象,那么我们的思路就是从控制Drawable这点下手。
全部使用drawable可以达到文中的效果。有条件的也可以使用图片资源。做出更丰富的效果。
参考:
layer-list
的环形drawable https://stackoverflow.com/questions/30676208/how-to-create-ring-shape-drawable-in-android/30677289更多Android文章可参考 https://an.rustfisher.com/
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/123988.html
摘要:地址中文自定义能改变尺寸颜色滑块图片刻度图片刻度文字和气泡指示器,当滑动时显示带有进度的指示器。给选择圆角方角默认两端是圆角,可以设置为方形。滑块下显示进度当的类型为时可以设置滑动后滑块下显示保留进度。 IndicatorSeekBar showImg(https://segmentfault.com/img/remote/1460000011967195);showImg(https...
摘要:吃饱喝足,两个人扶着腰走在路上炫腹还是女盆友的提醒说,你不是会小程序吗,能不能写一个点赞的小程序来用。哎还真是,我自己撸一个也是阔以的,说不定还能给其他人用。比较适合想要练手小程序和的童鞋全部的代码还请移步我的欢迎和。 showImg(https://segmentfault.com/img/remote/1460000015245489?w=530&h=153); 发生背景: ...
阅读 1559·2021-11-24 09:39
阅读 1041·2021-11-22 15:11
阅读 2166·2021-11-19 11:35
阅读 1626·2021-09-13 10:37
阅读 2452·2021-09-03 10:47
阅读 2132·2021-08-30 09:47
阅读 1625·2021-08-20 09:39
阅读 2899·2019-08-30 14:13