安卓SeekBar样式

5
我正在尝试为我的Android应用程序创建自定义seekbar。我找到了许多解决方案,但它们都使用“自定义”绘图代码作为背景。我的seekbar很简单-我有一个图像(仅一个)用于背景和一个用于拇指的图像。我面临的问题是缩放:我希望“thumb”和“background”图像根据seekbar控件的大小进行缩放。如何做到这一点?有趣的是,当使用图像(drawable)作为背景/拇指时,Android默认情况下不会对其进行缩放,而是保留它们的原始大小 :)

这就是为什么你要使用9.png来制作自定义的进度条的原因。 - barto90
有任何例子吗?我可以只使用一张图片来制作九宫格吗? - guest86
2个回答

6
你可以自定义滑动条的前景、背景和拇指滑块。
这是一个不错的教程: 教程 2 以下是如何创建自定义 9.png 图像: 九宫格图像

5
第一个链接已失效。这是为什么答案不应该只是链接集合,而实际上应该包含答案的好例子。 - Martin Epsz

2

1 您可以使用xml文件(progress.xml)定义ProgressBar的外观并将其放置在res目录中。

2 可以在声明ProgressBar的布局中定义thumb。

3 thumb可以是图像(imgthumb.png),但我注意到2个最佳实践

  1. 最佳thumb高度为ProgressBar高度的2.5倍
  2. thumb图像的高度和宽度与thumb直径完全相同时(即用于圆形thumb),最佳渲染,最后在每个桶中放置不同大小的thumb以适应不同的像素密度。

以下是来源

1 progress.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item android:id="@android:id/background">
    <shape android:shape="rectangle" >
        <corners android:radius="5dp" />

        <gradient
            android:angle="270"
            android:endColor="#cccccc"
            android:startColor="#d3d3d3" />
    </shape>
</item>
<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape android:shape="rectangle" >
            <corners android:radius="0dp" />

            <gradient
                android:angle="270"
                android:endColor="#ff0000"
                android:startColor="#ff0000" />
        </shape>
    </clip>
</item>
<item android:id="@android:id/progress">
    <clip>
        <shape android:shape="rectangle" >
            <corners android:radius="5dp" />

            <gradient
                android:angle="270"
                android:endColor="#1dc0ff"
                android:startColor="#1dc0ff" />
        </shape>
    </clip>
</item>

2 在布局中定义一个带有自定义滑块的进度条

<SeekBar
        android:id="@+id/song_seekbar"
        android:layout_width="0dp"
        android:layout_weight=".84"

        android:minHeight="8dip"
        android:maxHeight="8dip"

        android:layout_height="wrap_content"

        android:layout_centerVertical="true"
        android:layout_centerInParent="true"

        android:progressDrawable="@drawable/progressbar"
        android:thumb="@drawable/imgthumb" />

希望这能对你有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接