千家信息网

Android SeekBar如何自定义thumb旋转动画效果

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,这篇文章给大家分享的是有关Android SeekBar如何自定义thumb旋转动画效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。示例dimens.xml为方便管理,可
千家信息网最后更新 2024年12月12日Android SeekBar如何自定义thumb旋转动画效果

这篇文章给大家分享的是有关Android SeekBar如何自定义thumb旋转动画效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    示例

    dimens.xml

    为方便管理,可以添加一些尺寸设置

    6dp2dp20dp4dp

    drawable

    我们一共要添加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
    shape_thumb_round_1.xml

    用solid和stroke做出的圆环效果

                
    layers_thumb_ring_sweep_1.xml

    这是准备拿来转圈的thumb。使用layer-list,叠加多层效果。
    底部是一个半白色的圆(android:shape="oval")。
    再叠加上一层圆环(android:shape="ring"),使用了渐变色,增加动感。

                                                                                                    
    rotate_thumb_1.xml

    定义旋转效果。注意它的drawable使用了上面定义的layers_thumb_ring_sweep_1.xml。

    旋转参数android:toDegrees可以根据需求定义。

    layers_seek_bar_progress_1.xml

    定义进度条的样式。这个是"底座"。颜色要和上面的匹配,看起来好看一点。

                                                                                                                                                                                    

    layout

    上面的资源文件准备完毕后。在我们的布局中添加一个SeekBar

    • android:maxHeightandroid:minHeight需要设置

    • android:progressDrawable 用前面定义好的"底座"

    • android:thumb 先使用静态的样式

    Activity中调用

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

    感谢各位的阅读!关于"Android SeekBar如何自定义thumb旋转动画效果"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    0