Android自定义SeekBar,基础但是要比大多数文章更综合一点,有一些常见的问题解决

android 专栏收录该内容
3 篇文章 0 订阅

网上的自定义SeekBar的文章有很多,很多都是千篇一律。当然我也是从网上学来的,但是按照网上大多数文章来做以后会遇到一些问题,还需要再次百度、再次百度才能解决。写这篇的文章的目的也是为了,让大多数人搜索到这里一次可能就足够了

拿我们UI给的一张图来说

这里写图片描述
这里写图片描述

从图上看,UI的要求有以下几个:

  • 1 . 进度条有两种状态,总进度和进度的颜色分别有两种
  • 2 . 进度条的起始点有圆角
  • 3 . thumb(滑块)的效果有两种,未按下和按下。

这也是一个最最基础的Seekbar自定义,不涉及修改代码,只是修改布局文件就能实现的一个效果。

那么如何实现这个简单的效果?

1.seekbar在布局文件中的属性配置

<SeekBar
    android:layout_width="500px" ---seekbar总宽度
    android:layout_height="wrap_content" ---这里一般设置为wrap_content即可
    android:thumb="@drawable/thum_circle_blue" ---滑块的自定义文件
    android:progressDrawable="@drawable/layer_progress"  ---进度条的自定义文件
    android:maxHeight="4dp" ---通过这两个属性设置进度条的高度
    android:minHeight="4dp" ---通过这两个属性设置进度条的高度
    android:splitTrack="false" ---设置滑块的背景透明
    android:background="@null" ---取消滑块的点击效果
    />

2.滑块样式自定义文件

其实就是一个drawable,这个drawable也是完全可以用到我们常用的按钮的效果中,默认、按下、获取焦点时显示不同的文件内容

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/pic_thumb_pressed" android:state_enabled="true" android:state_pressed="true"/> --按下
    <item android:drawable="@drawable/pic_thumb_pressed" android:state_selected="true"/> --选中
    <item android:drawable="@drawable/pic_thumb_pressed" android:state_focused="true"/> --获取焦点
    <item android:drawable="@drawable/pic_thumb_default"/> ---默认效果
</selector>

pic_thumb_default, pic_thumb_pressed 就是默认和按下是滑块的两个图片,找UI切一下图就行了

3.进度条自定义文件

<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item> ----对背景的控制,没有进度时
        <shape>
            <corners android:radius="2dp" /> --圆角
            <solid android:color="#ffffff"/> --颜色
        </shape>
    </item>
    <item> --- 这个目前来说不知道什么用,也可以去掉这一部分
        <clip>
            <shape>
                <corners android:radius="2dp" />
                <solid android:color="#ffffff" />
            </shape>
        </clip>
    </item>
    <item> --- 对进度条的控制
        <clip>
            <shape>
                <corners android:radius="2dp" /> --圆角
                <solid android:color="#4084ff" /> --颜色
            </shape>
        </clip>
    </item>
</layer-list>

常见问题介绍

其实介绍到这里,自定义seekbar就完成,网上的大多说文章就到这里就结束了,他们的例子中都忽略了上面seekbar配置中的两个属性。android:splitTrackandroid:background 这也是我写这篇文章的最主要目的。

1. android:splitTrack

这个属性其实是非常重要的,如果不设置这个属性的话,即使UI给你切的滑块是透明的,他也会有一个方形的阴影,只有设置android:splitTrack=false,才会使滑块做到真正背景透明,来看一个没有设置这个属性的效果。
这里写图片描述

不设置这个属性,会在滑块的周围有一个方形的不透明区域,非常丑

2. android:background

这个属性其实不设置也可以,设置 android:background="@null",主要是为了消除滑块的点击动画,会慢慢出现一个圆形的透明阴影,这里会影响整体UI的效果,所以要把它消除掉,来看一个没有设置这个属性的效果。

这里写图片描述

不设置这个属性时,会在滑动或点击滑块时,有一个半透明的黑色阴影动画,看情况是否设置关闭吧

总结

文章内容非常基础,希望能帮到遇到这些问题的同学.

  • 3
    点赞
  • 2
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值