1、设置thumb透明展示进度线效果

情景描述:UI给了一张带有阴影效果的滑块,然后我们设置android:thumb=“@mipmap/xxx"后效果如下

android seekbar文字 android seekbar样式_android


滑块两边有一块空白区域,这是因为系统没有绘制滑块后方的线条,即滑块和线处于同一层次,而我们想要的效果则是滑块覆盖在线条上且透明。因此,我们只需要设置以下代码:

android:splitTrack=“false” //默认为true 效果如下

android seekbar文字 android seekbar样式_滑块_02


2.padingStart与paddingEnd

seekbar控件自带内间距,我们常常能看见,设置的进度条线长度没有控件实际宽度宽,这就是因为自带内间距的原因,系统默认内间距的原因是用来完全显示出thumb,所以我们只需要按照自己需求去设置一下开始与结束的内间距即可。

android seekbar文字 android seekbar样式_安卓_03


3.thumbOffset 滑块偏移量

还是以刚刚的例子,一张带有透明区域的滑块图,如果设置

android:thumbOffset=“0dp” // 那么效果如下

android seekbar文字 android seekbar样式_android_04


即:为0时,thumb的最左侧与进度线的最左侧对齐;

注:当这里偏移量为正值时,值越大越往左偏,值为负数时,越小越往右偏移

例:android:thumbOffset=”-20dp"

android seekbar文字 android seekbar样式_滑块_05


4. 自定义进度条

一般来讲,seekbar的进度条默认颜色与进度颜色都会根据应用主题颜色进行定制化,我们通常会自定义一个xml来绘制出UI设计的效果。xml代码如下:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/background">
        <shape>
            <solid android:color="#BCFFF7" />
            <corners android:radius="2dp" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="#BCFFF7" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <scale android:scaleWidth="100%">
            <shape>
                <gradient android:startColor="#FFF"
                    android:endColor="#FFB000"/>
                <corners android:radius="2dp" />
            </shape>
        </scale>
    </item>
</layer-list>

上面需要注意的有几点

a. item的id

几个item的id,这几个id是Android的seekbar解析的默认id,需要一一对应,每个item中可以自定义shape,例如我这里写的为:默认无进度的颜色为BCFFF7,因为我不需要有缓存等所以第二颜色和背景色相同,然后是进度颜色是一个由白色到FFB000渐变的shape drawable。

b. <scale>与<clip>标签

这两个标签在<layer-list>中进行使用,<scale>表示的含义是将内部的内容进行放大扩充,<clip>表示将内容进行裁剪显示

这里使用这两个标签我通过举例说明:

比如上面代码块里我在<item android:id=“@android:id/progress”>使用的<scale android:scaleWidth=“100%”> 就表示我的进度条颜色要完整的显示我所使用的渐变。比如我当前进度为50%,那么我的渐变就是从0%到50%的渐变。如果此时我把<scale>标签改为<clip>那么显示效果就是0%到100%的渐变裁剪出0到50%的内容。如下图

android seekbar文字 android seekbar样式_android seekbar文字_06


android seekbar文字 android seekbar样式_android seekbar文字_07


clip标签更适合用于一张完整的进度图,根据进度慢慢显示完整张图

// 欢迎在评论中添加更多属性,持续更新