文章

SeekBar

SeekBar

SeekBar 基本用法

seekbar 设置进度条颜色

  • xml 设置 seekbar 的进度条颜色
    android:progressDrawable="@drawable/bg_adjust_seek_bar"
  • 代码
1
seekBar.getProgressDrawable().setColorFilter(Color.WHITE, Mode.SRC_ATOP);//设置进度条颜色、样式

同一种颜色的进度条 bg_adjust_seek_bar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@android:id/background"
        android:paddingBottom="4dp"
        android:paddingTop="4dp">
        <shape>
            <corners android:radius="50dp"/>
            <solid android:color="#efefef"/>
        </shape>
    </item>

    <item
        android:id="@android:id/progress"
        android:paddingBottom="4dp"
        android:paddingTop="4dp">
        <clip>
            <shape>
                <corners android:radius="50dp"/>
                <gradient
                    android:angle="0"
                    android:endColor="#2896F0"
                    android:startColor="#2896F0"/>
            </shape>
        </clip>
    </item>
</layer-list>

实现颜色渐变的进度条

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@android:id/background"
        android:paddingBottom="4dp"
        android:paddingTop="4dp">
        <shape>
            <corners android:radius="50dp"/>
            <solid android:color="#999999"/>
        </shape>
    </item>

    <item
        android:id="@android:id/progress"
        android:paddingBottom="4dp"
        android:paddingTop="4dp">
        <clip>
            <shape>
                <corners android:radius="50dp"/>
                <gradient
                    android:angle="0"
                    android:endColor="#C166D1"
                    android:startColor="#2896F0"/>
            </shape>
        </clip>
    </item>
</layer-list>

背景、第二进度、进度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                android:startColor="@color/gray_cc"
                android:centerColor="@color/gray_cc"
                android:centerY="0.75"
                android:endColor="@color/gray_cc"
                android:angle="270"/>
        </shape>
    </item>
    < !-- 我的没有第二背景,故第二背景图没有画 -->
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:startColor="#80ffd300"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:angle="270"/>
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />
                <gradient
                    android:startColor="@color/gray_cc"
                    android:centerColor="@color/gray_cc"
                    android:centerY="0.75"
                    android:endColor="@color/gray_cc"
                    android:angle="270"/>
            </shape>
        </clip>
    </item>
</layer-list>

seekbar 的滑块按钮图片

  • xml
    android:thumb="@drawable/bg_seek_bar_thumb2"
  • 代码
1
seekBar.getThumb().setColorFilter(Color.GRAY, Mode.SRC_ATOP);//设置滑块颜色、样式

提醒下滑块滑到 0 或者最大可能展示不完,滑块只展示一半;还有有的背景太高;所以这些需要设置一下即可:

1
2
3
4
android:maxHeight="5dp"
android:minHeight="5dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"

上面 maxHeight 与 minHeight 可以让背景不那么高,更改值可以控制高度。
paddingLeft 与 paddingRight 最好是滑块的宽度一半,这样即可展示完全。

SeekBar 粗细

minHeightmaxHeight   来控制 progress 的粗细

layout_height   要设置  wrap_content   这样才能显示完成的图标

本文由作者按照 CC BY 4.0 进行授权