路曼曼其修远兮,吾将上下而求索。—— 屈 原《离骚》

https://github.com/warkiz/IndicatorSeekBar

IndicatorSeekBar:功能丰富的 Android 自定义进度条控件

在 Android 开发中,进度条(SeekBar)是一个常用的控件,主要用于调节值或显示进度。然而,默认的 SeekBar 功能有限,样式单一,难以满足复杂的 UI 需求。为了解决这些问题,IndicatorSeekBar 提供了一个强大的自定义进度条解决方案。

IndicatorSeekBar 是一个高度可定制的 Android 开源控件,支持各种样式和功能,包括指示器显示、分段标记、动态颜色变化等,能够显著提升用户体验。


什么是 IndicatorSeekBar?

IndicatorSeekBar 是一个 Android 自定义控件,用于实现带指示器的进度条。它不仅支持显示实时进度,还提供了丰富的样式与功能选项,适用于各种复杂的 UI 场景。


核心功能

  1. 实时指示器显示:在用户拖动进度条时,指示器会显示当前的进度值。
  2. 支持分段标记:可以将进度条分为多个段,适用于等级选择或评分系统。
  3. 高度可定制化
    • 支持设置指示器样式、颜色、大小等。
    • 支持自定义进度条和分段标记的样式。
  4. 动态颜色变化:支持根据进度动态调整颜色。
  5. 多种进度显示模式:支持连续模式和分段模式。
  6. 事件监听:提供丰富的事件监听器,方便实现交互逻辑。

快速上手指南

以下是使用 IndicatorSeekBar 的基本步骤:

1. 添加依赖

在项目的 build.gradle 文件中添加以下依赖:

1
2
3
dependencies {
implementation 'com.github.warkiz.widget:IndicatorSeekBar:latest_version'
}

latest_version 替换为 GitHub Releases 页面的最新版本号。


2. 在布局文件中使用

在 XML 中添加 IndicatorSeekBar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<com.warkiz.widget.IndicatorSeekBar
android:id="@+id/indicatorSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:isb_max="100"
app:isb_min="0"
app:isb_progress="50"
app:isb_indicator_color="@color/blue"
app:isb_indicator_text_size="16sp"
app:isb_track_color="@color/gray"
app:isb_second_track_color="@color/blue"
app:isb_thumb_color="@color/blue"
app:isb_show_tick_marks_type="oval"
app:isb_tick_mark_text_array="@array/levels"
app:isb_tick_mark_text_color="@color/black"
app:isb_tick_mark_text_size="12sp"
app:isb_show_indicator="always" />

常用属性说明

  • app:isb_max:设置进度条的最大值。
  • app:isb_min:设置进度条的最小值。
  • app:isb_progress:设置默认进度。
  • app:isb_show_indicator:控制指示器的显示模式(例如:alwaysautonone)。
  • app:isb_track_color:设置进度条背景轨道的颜色。
  • app:isb_second_track_color:设置进度条已完成部分的颜色。
  • app:isb_thumb_color:设置拖动圆点的颜色。
  • app:isb_tick_mark_text_array:设置分段标记的文本内容。

3. 在代码中动态控制

IndicatorSeekBar 提供了丰富的 API,可以在代码中动态设置参数或监听事件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
val indicatorSeekBar = findViewById<IndicatorSeekBar>(R.id.indicatorSeekBar)

// 设置进度
indicatorSeekBar.setProgress(75)

// 监听进度变化事件
indicatorSeekBar.setOnSeekChangeListener(object : IndicatorSeekBar.OnSeekChangeListener {
override fun onSeeking(seekParams: IndicatorSeekBar.SeekParams) {
println("当前进度:${seekParams.progress}")
}

override fun onStartTrackingTouch(seekBar: IndicatorSeekBar?) {
println("开始拖动")
}

override fun onStopTrackingTouch(seekBar: IndicatorSeekBar?) {
println("停止拖动")
}
})

进阶功能

1. 分段模式

IndicatorSeekBar 支持将进度条分为多个段,并显示分段标记。例如:

1
2
3
4
5
6
7
8
9
10
11
<com.warkiz.widget.IndicatorSeekBar
android:id="@+id/indicatorSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:isb_max="100"
app:isb_min="0"
app:isb_tick_mark_text_array="@array/levels"
app:isb_show_tick_marks_type="oval"
app:isb_tick_mark_text_color="@color/black"
app:isb_tick_mark_text_size="12sp"
app:isb_auto_adjust_to_tick_mark="true" />

通过 app:isb_auto_adjust_to_tick_mark 属性可以让进度条自动调整到最近的分段标记。


2. 自定义指示器内容

IndicatorSeekBar 支持自定义指示器的显示内容:

1
2
3
indicatorSeekBar.setIndicatorTextFormatter { progress ->
"等级:$progress"
}

3. 动态样式调整

可以通过代码动态更改进度条和指示器的样式,例如:

1
2
3
indicatorSeekBar.setTrackColor(Color.GRAY)
indicatorSeekBar.setIndicatorColor(Color.RED)
indicatorSeekBar.setThumbColor(Color.GREEN)

应用场景

  1. 评分系统:用户可以通过拖动进度条选择评分,指示器实时显示评分数值。
  2. 音量或亮度调节:在调节音量或亮度时,指示器可以显示具体数值。
  3. 等级选择器:通过分段模式实现等级选择功能。
  4. 时间选择器:用于选择时间段或日期范围。

总结

IndicatorSeekBar 是一个功能强大且易于使用的 Android 自定义控件,能够显著提升进度条的交互体验。无论是评分系统、音量调节,还是等级选择器,IndicatorSeekBar 都能轻松满足开发者的需求。

项目地址:https://github.com/warkiz/IndicatorSeekBar

如果你正在寻找一个高度可定制的进度条控件,不妨试试 IndicatorSeekBar!欢迎为项目点亮 ⭐️!