一起Talk Android吧(第四百五十八回:SeekBar补充用法一)

Posted talk_8

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一起Talk Android吧(第四百五十八回:SeekBar补充用法一)相关的知识,希望对你有一定的参考价值。

文章目录

各位看官们大家好,上一回中咱们说的例子是"修改View的布局参数",这一回中咱们说的例子是"SeekBar补充用法"。闲话休提,言归正转,让我们一起Talk android吧!

我们在之前的博客中介绍过SeekBar的用法,如果有看官忘记了可以点击这里查看,本章回中我们将对之前的内容做一些补充,可以看作是在基础用法之上的扩展。扩展的内容包含以下几个方法:

  • 修改进度条的背景
  • 修改进度条的头部
  • 修改进度的步进值

接下来我们分介绍这些内容。

修改进度条背景

进度条的背景就是拖动SeekBar时显示进度的背景和未完成进度的背景,使用Holo主题是默认的进度背景是绿色,未完成的背景为灰色。我们可以通过SeekBar的相关属性来修改这些背景颜色。下面是一个示例代码,请大家参考:

<!-- //其它属性省略不写 -->
<SeekBar
   android:thumbTint="#FF8800"
   android:progressBackgroundTint="@color/color_gray"
   android:progressTint="@color/white"/>

上面的代码中progressTint属性用来控制进度的颜色,progressBackgroundTint属性用来控制未完成进度的颜色,thumbTint属性用来控制头部的颜色。

我的经验是头部的颜色最好的进度的颜色保持一致,例如官方使用的进度颜色和头部颜色都是绿色。有看官问什么是头部?看官莫急,我们稍后就会介绍。

修改进度条的头部

进度条的头部指的是显示光标的地方,或者理解为进度条最前方的小圆点。如果使用了默认的Holo主题,那么头部是一个绿色的小圆点,点击变会变大。如果项目中觉得它不好看或者不符合项目需求,可以使用SeekBarthumb属性来指定它的头部,下面是一个示例代码:

    <!-- //其它属性省略不写 -->
    <Seekbar
        android:thumb="@drawable/ic_face"/>

在上面的代码中,我们使用一张笑脸图片替换了默认的头部,运行程序时会在SeekBar的头部显示一个笑脸。当然也可以向默认的头部一样做一个动态的头部,正常情况下比较小,点击时变大。这就需要自定义drawable资源了,下面是官方使用的drawable资源,我们可以参考:

<style name="Widget.Holo.SeekBar">
    <item name="indeterminateOnly">false</item>
    <item name="progressDrawable">@drawable/scrubber_progress_horizontal_holo_dark</item>
    <item name="indeterminateDrawable">@drawable/scrubber_progress_horizontal_holo_dark</item>
    <item name="minHeight">13dip</item>
    <item name="maxHeight">13dip</item>
    <item name="thumb">@drawable/scrubber_control_selector_holo</item>
    <item name="thumbOffset">16dip</item>
    <item name="focusable">true</item>
    <item name="paddingStart">16dip</item>
    <item name="paddingEnd">16dip</item>
    <item name="mirrorForRtl">true</item>
</style>

上面的SeekBar使用的style位于:

/frameworks/base/core/res/res/values/styles_holo.xml

文件中,从代码中可以看作thumb属性使用了其它的drawable文件,该文件的路径为

/frameworks/base/core/res/res/drawable/seek_thumb.xml

文件中的内容如下:

<!-- This is the thumb on the seek bar. -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_pressed" />

    <item android:state_focused="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:state_selected="true"
          android:state_window_focused="true"
          android:drawable="@drawable/seek_thumb_selected" />

    <item android:drawable="@drawable/seek_thumb_normal" />
</selector>

上面的代码中使用的drawable资源位于同目录下的drawable-xdpi目录下,它们都是图片,这里就列出了,代码中使用selector,它给不同的状态配置了不同的图片,这样就会让SeekBar的头部在不同状态下使用不同的图片,进而呈现不同的效果。我们可以参考官方的代码自定义一个漂亮的头部。

看官们,关于"SeekBar补充用法"的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!

以上是关于一起Talk Android吧(第四百五十八回:SeekBar补充用法一)的主要内容,如果未能解决你的问题,请参考以下文章

一起Talk Android吧(第四百八十八回:ObjectAnimator)

一起Talk Android吧(第四百五十回:绘制彩虹)

一起Talk Android吧(第四百一十八回:制作时钟)

一起Talk Android吧(第四百四十八回:UI控件之Switch)

一起Talk Android吧(第四百七十八回:旋转类视图动画)

一起Talk Android吧(第四百七十八回:旋转类视图动画)