路曼曼其修远兮,吾将上下而求索。—— 屈 原《离骚》
https://github.com/warkiz/IndicatorSeekBar
IndicatorSeekBar:功能丰富的 Android 自定义进度条控件
在 Android 开发中,进度条(SeekBar)是一个常用的控件,主要用于调节值或显示进度。然而,默认的 SeekBar 功能有限,样式单一,难以满足复杂的 UI 需求。为了解决这些问题,IndicatorSeekBar 提供了一个强大的自定义进度条解决方案。
IndicatorSeekBar 是一个高度可定制的 Android 开源控件,支持各种样式和功能,包括指示器显示、分段标记、动态颜色变化等,能够显著提升用户体验。
什么是 IndicatorSeekBar?
IndicatorSeekBar 是一个 Android 自定义控件,用于实现带指示器的进度条。它不仅支持显示实时进度,还提供了丰富的样式与功能选项,适用于各种复杂的 UI 场景。
核心功能
- 实时指示器显示:在用户拖动进度条时,指示器会显示当前的进度值。
- 支持分段标记:可以将进度条分为多个段,适用于等级选择或评分系统。
- 高度可定制化:
- 支持设置指示器样式、颜色、大小等。
- 支持自定义进度条和分段标记的样式。
- 动态颜色变化:支持根据进度动态调整颜色。
- 多种进度显示模式:支持连续模式和分段模式。
- 事件监听:提供丰富的事件监听器,方便实现交互逻辑。
快速上手指南
以下是使用 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
:控制指示器的显示模式(例如:always
、auto
、none
)。
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)
|
应用场景
- 评分系统:用户可以通过拖动进度条选择评分,指示器实时显示评分数值。
- 音量或亮度调节:在调节音量或亮度时,指示器可以显示具体数值。
- 等级选择器:通过分段模式实现等级选择功能。
- 时间选择器:用于选择时间段或日期范围。
总结
IndicatorSeekBar 是一个功能强大且易于使用的 Android 自定义控件,能够显著提升进度条的交互体验。无论是评分系统、音量调节,还是等级选择器,IndicatorSeekBar 都能轻松满足开发者的需求。
项目地址:https://github.com/warkiz/IndicatorSeekBar
如果你正在寻找一个高度可定制的进度条控件,不妨试试 IndicatorSeekBar!欢迎为项目点亮 ⭐️!