- 文档
- 知识库
【免费下载链接】AndroidLibs
:fire:正在成为史上最全分类 Android 开源大全~~~~(长期更新 Star 一下吧)
本文以 AndroidLibs 仓库中 进度条Progressbar/README.md 分类文档为骨架,系统梳理 Android 生态中与进度条相关的 97 个开源库:涵盖圆形/环形进度、SeekBar 滑块、Loading 加载动画、水波特效、网络下载进度、仪表盘数据可视化等方向。读完本文,你既能按形态与场景快速定位合适的开源方案,也能掌握原生 ProgressBar / SeekBar 的分类坐标,以及自定义进度控件与网络进度监听的落地思路。
1. 先建立坐标:Android 原生进度控件的分类体系
进度条(ProgressBar)是 Android 中最常用的反馈型控件之一。在进入开源库清单之前,先厘清原生框架的分类坐标,后续所有开源库都可以映射到这张坐标上。
1.1 ProgressBar:确定进度与不确定进度
原生ProgressBar有两种核心状态:
- 确定进度(determinate):进度值明确可知,通过
android:max与android:progress两个属性控制最大值与当前值,典型场景如文件下载、数据加载百分比; - 不确定进度(indeterminate):无法预知完成时间,仅展示"正在运转"的动画,通过
android:indeterminate或setIndeterminate(boolean)开启,典型场景如网络请求等待。
水平样式通过style="?android:attr/progressBarStyleHorizontal"指定,此时ProgressBar才能显示确定进度;默认样式是转圈样式。
1.2 SeekBar:可交互的进度
SeekBar继承自ProgressBar,在其基础上增加了用户拖动能力,通过OnSeekBarChangeListener的三个回调感知进度变化:
onProgressChanged:拖动过程中持续回调;onStartTrackingTouch:开始触摸;onStopTrackingTouch:结束触摸。
SeekBar同样支持max/progress/secondaryProgress(次要进度,常用于缓冲进度显示)。开源库中对 SeekBar 的改造是最多的方向之一:加刻度、加气泡、加区间、改成圆弧或半圆等。
1.3 开源库的常见扩展维度
对照原生控件,AndroidLibs 收录的进度条开源库基本沿着以下维度扩展:
| 维度 | 说明 | 典型形态 |
|---|---|---|
| 形态 | 在水平/转圈之外扩展出圆形、圆环、弧形、扇形、螺纹、波形等 | 环形、圆弧、水波 |
| 交互 | 由纯展示扩展为可拖动、可区间选择、可步进 | SeekBar 变体 |
| 状态 | 在加载中之外补充成功、失败、重试等终态动画 | 下载按钮、弹性动画 |
| 场景 | 面向图片加载、网络请求、表单分页、倒计时等具体业务 | 网络进度、图片进度 |
| 风格 | 致敬特定产品(Google、Uber、支付宝、Apple Watch、守望先锋等) | 主题化 Loading |
进度条Progressbar/README.md 开篇即点明本分类的收录范围:"各种进度条,progressbar seekbar 自定义的……",下文即按上述坐标将 97 个库分组展开。
2. 环形与圆形进度条:最大的一个分支
圆形/环形是进度条开源库中数量最庞大的形态,从简单圆环到内嵌内容的复合控件一应俱全。
2.1 经典圆形 / 圆环进度
- android-circular-progress-view(GuilhE):一个精致的
CircularProgressView,适合作为圆形进度的基础形态; - CircularProgressbar(sparrow007):纯圆形进度条,展示环形进度百分比;
- CircularProgressBar(Shah-Sahab):经典的
CircularProgressBar实现; - CircularProgressView(rahatarmanahmed):Material 风格的圆形进度条,带平滑动画;
- CircleProgressBar(dinuscxj):直接继承
ProgressBar的圆形进度条库,从源码设计上保留了原生 ProgressBar 的属性和使用习惯,是最贴近框架语义的一类实现; - CircleProgress(lzyzsd):一个库同时提供
CircleProgress(圆形)、DonutProgress(甜甜圈)、ArcProgress(弧形)三种形态,适合作为多形态需求的一站式选择; - CircleProgress(Fichardu):圆形进度动画视图,注重动画流畅度;
- RingProgressBar(HotBitmapGG):Material Design 风格的圆环进度条,圆环形态与 Material 配色语言统一;
- RingProgress(ldoublem):类似 Apple Watch 健身记录的环形进度,多环叠加展示多项数据;
- ColorArcProgressBar(Shinelw):彩色弧形进度条,通过多色渐变表达进度区间;
- WhorlView(Kyson):螺纹(whorl)风格的进度条,视觉效果独特;
- dashed-circular-progress(glomadrian):虚线圆弧进度动画,内部可以放置任意 View,适合把图标、文字、图片嵌在圆环中心;
- circularView(rjsvieira):类 Google Fit 风格的圆形视图,适合健康、运动类数据的环形展示。
2.2 环形进阶:堆叠、扇形与业务圆环
- ArcProgressStackView(GIGAMOLE):以弧形(arc)模式呈现多条进度条,文档明确列出其可控制维度:View 尺寸与 CB 控制、字体与动画、绘制宽度与偏移与渐变、角度与方向、阴影,是"信息密度高且总控能力强"的代表;
- SectorProgressView(timqi):使用圆与扇形实现的简单进度/图表控件,扇形扫过的角度即代表进度;
- CreditSesameRingView(HotBitmapGG):还原支付宝芝麻信用分界面的圆环视图,圆环随信用分数渐变着色;
- FABProgressCircle(JorgeCastilloPrz):围绕任意
FloatingActionButton绘制的 Material 进度圆环,符合 Material Design 指南,常用于"提交按钮 + 提交中反馈"的交互; - AnimatedCircleLoadingView(jlmd):动画圆形加载视图,支持成功(indeterminate → ok)与失败(indeterminate → failure)两种终态动画;
- circular-music-progressbar(aliab):音乐 App 场景的圆形进度条,进度环围绕头像/封面图展开;
- android-square-progressbar(mrwonderman):进度条围绕图片四周绘制(方形路径),是"围绕内容画进度"的另一形态。
2.3 圆形时间 / 计时类控件
- circle-time-view(CROSP):以美观的环形格式显示时间,文档明确其用途是计时器与秒表;
- CircleAlarmTimerView(yingLanNull):圆形进度条实现的闹钟计时视图;
- CountDownProgressView(kishorsinghgour):圆角进度视图,中心以文字显示剩余时间/周期/事件,适合倒计时、周期任务场景。
选型建议:纯展示用经典圆环即可;需要内嵌内容优先考虑 dashed-circular-progress;要同时表达多项指标可看 ArcProgressStackView 与 RingProgress;涉及提交/下载反馈,FABProgressCircle、AnimatedCircleLoadingView 这类带终态动画的方案更完整。
3. SeekBar 与滑块家族:可交互的进度
这一分支解决"用户参与进度控制"的问题,从带刻度的区间选择到异形滑块都有覆盖。
3.1 区间与刻度
- SeekBarWithIntervals(RameshBhupathi):带文字标签区间的 SeekBar,文档描述其效果类似Olx 筛选视图——把连续进度离散成若干可点击的档位;
- material-range-bar(oli107):Material 风格的范围选择控件,用于选择一个数值区间(双滑块);
- RangeBarVertical(ITheBK):竖向RangeBar(SeekBar),带双滑块,适合纵向布局;
- crystal-range-seekbar(syedowaisali):Crystal Range Seekbar,区间选择类实现;
- terminal-seekbar(alshell7):智能 SeekBar,支持在随机位置设置多个折点(junction points),将进度划分为多段;
- SegmentedStepperSeekbar(harshalbenake):分段步进式 SeekBar,按段递进而非连续滑动。
3.2 异形滑块:半圆、圆弧与圆形
- ProtractorView(GoodieBag):半圆(量角器)形态的 SeekBar,适合角度、温度等半量程调节;
- SeekArc(Triggertrap):圆弧 SeekBar,把拖动路径改造成弧线;
- SwagPoints(enginebai):圆形SeekBar,支持min/max 范围与步长(step)设置,适合环形调节(如音量、色温);
- HueSeekBar(iammert):灵感来自Philips Hue 智能灯 App的 SeekBar,色彩与亮度调节类界面常参考它。
3.3 风格化滑块
- BubbleSeekBar(woxingxiao):进度变化时以可视化气泡呈现当前值,拖动体验直观;
- android-slidr(florent37):文档称之为"另一个 slider / seekbar",属于通用滑块的补充实现;
- PodSLider(bhargavms):UI 滑块控件(slider),面向现代 UI 的圆润滑块;
- SnailBar(android-cjj):蜗牛造型控件,文档明确说明既可以当 SeekBar 也可以当 ProgressBar使用,兼顾交互与展示;
- AwesomeProgressbar(alex5241):支持左右两边同时滚动的进度条,打破了单向填充的常规;
- FuckingVolumeSlider(shellljx):文档原话"android 实现的反人类音量滑块",一个以恶搞调侃方式实现的音量滑块,适合做趣味 Demo 与动画练习;
- SegmentedStepperSeekbar(前文已列):分段步进滑块,兼顾"分步引导"与"进度展示"。
选型建议:连续区间调节用 material-range-bar / crystal-range-seekbar;离散档位选择用 SeekBarWithIntervals / SegmentedStepperSeekbar;环形调节用 SwagPoints / SeekArc;需要强反馈的拖动场景,BubbleSeekBar 的气泡方案表现力更强。
4. 加载动画与 Loading 指示器
Loading 指示器是不确定进度(indeterminate)的主力形态,这一分支数量大、风格差异明显。
4.1 点、方块与几何
- DotsLoaderView(steelkiwi):圆点加载视图,多个圆点依次起伏;
- SlidingSquareLoaderView(steelkiwi):滑动方块加载器;
- BoxLoaderView(nipun-birla):盒子类加载动画;
- tinglingsquares(ishan1604):文档形容为"a delightful progress animation",方块阵列出场的趣味动画;
- geometric-progress-view(vbohush):以2D 几何图形(多边形)为载体的可定制进度指示器;
- CoolProgressViews(amanjeetsingh150):一个库集合多种"酷"进度视图;
- LoadingDrawable(dinuscxj):提供**动物(Animal)、风景(Scenery)、圆形跳跃(CircleJump)**等多种 Loading Drawable,以 Drawable 形式接入,便于直接替换系统加载资源。
4.2 拟物与趣味主题
- FunnyLoader(team-supercharge):加载指示器内置200+ 条随机趣味文案,加载过程中文字不断变化,适合内容型产品;
- SmileyLoadingView(andyxialm):仿支付宝的笑脸 LoadingView,加载完成时笑脸绽放;
- BreathingProgressDemo(webianks):呼吸式进度动画,进度块像呼吸一样起伏;
- ChompProgressView(andyb129):文档形容为"从你的美味图片上一口一口咬下去"的进度视图,进度以"吃掉图片"呈现;
- BeerProgressView(andyb129):啤酒风格进度视图,进度液体带气泡上浮;
- OverwatchProgress(zjywill):守望先锋(Overwatch)风格进度动画,适合游戏化界面。
4.3 贝塞尔与特殊曲线
- BezierLoadingView(JeasonWong):贝塞尔曲线加载动画,曲线形变带动进度流转;
- AndroidFillableLoaders(JorgeCastilloPrz):基于SVG 路径的填充式进度视图,文档特别说明其适合打造品牌 Logo 加载动画(灵感来自 iOS 的 FillableLoaders),支持波浪、平面、尖刺、圆角等多种填充形态。
4.4 Material / Google 风格
- MaterialProgressBar(chaossss):Material 风格进度条实现;
- MaterialProgressBar(DreaminginCodeZH):强调外观一致性(consistent appearance)的 Material Design ProgressBar,解决不同 Android 版本上 Material 进度条样式不一致的问题;
- MaterialLoadingProgressBar(lsjwzh):外观与SwipeRefreshLayout 下拉刷新指示器一致的 ProgressBar(基于 support-v4 v21+);
- materialish-progress(pnikosis):兼容 Android 2.3的 Material 风格转轮进度,适合需要老版本兼容的工程;
- GoogleProgressBar(jpardogo):复刻 Google 各服务中出现的加载样式(含多套变体);
- SmoothProgressBar(castorflex):平滑、可定制的水平不确定进度条,加载动画过渡柔和;
- NumberProgressBar(daimajia):文档形容为"beautiful, slim"的进度条——数字百分比与进度条一体化显示,曾是被广泛使用的经典实现之一;
- AnimateHorizontalProgressBar(MasayukiSuda):轻量自定义 View,让水平 ProgressBar 的动画更易触发与控制。
4.5 场景化加载:布局、列表、文本与图片
- pageloader(arieridwan8):自定义布局加载,为页面/布局容器提供加载态;
- baso(gitsindonesia):以组件的方式维护列表加载状态,把加载中、空数据、错误等状态封装为可复用组件;
- loaderviewlibrary(elye):让TextView 或 ImageView 在内容真正加载完成前展示加载动画,适合异步填充文本与图片的场景;
- uberprogressview(ishan1604):从Uber App获取灵感的进度视图;
- Loading(yankai-victor):提供RotateLoading(旋转)、BookLoading(书本翻页)、NewtonCradleLoading(牛顿摆)等多套 Loading 视图;
- LoadingView(ldoublem):集合多种动画效果的 LoadingView 库;
- AnimatedLoadingIndicator(yash786agg):动画版的 Progress Dialog,替换系统默认对话框加载动画;
- HoldToLoadLayout(melihaksoy):围绕子 View 绘制圆形加载进度,灵感来自Destiny(命运)PS4 版的"按住确认"机制——按住触发、松开取消,适合"长按加载"类交互;
- SuperLoadingProgress(835127729):文档形容为"优美的加载器",根据进度值切换加载效果。
选型建议:只想换换默认转圈样式,优先 LoadingDrawable / materialish-progress 这类"资源级"方案;需要品牌化加载,AndroidFillableLoaders、BezierLoadingView 表现力更强;内容型产品可参考 FunnyLoader 的文案趣味化思路;列表多状态管理则看 baso、pageloader。
5. 水波与创意特效进度
水波是进度展示中辨识度最高的形态之一,液体填充效果天然契合"容量、水位、进度"等语义。
- WaveLoading(race604):文档称其为"一个全能的水波加载动画",波浪高度随进度变化,中心可显示文字,是水波类库的经典实现;
- WaveProgressView(fanrunqi):文档称其为"most powerful wave load view",强调波浪渲染的精细度;
- WaveLoadingView(tangqi92):提供波浪加载效果的 Android 库;
- GADownloading(Ajian-studio):文档评价"蛮有创意"的下载加载效果,成功与失败两种终态动画区分明显;
- ElasticDownload(Tibolte):弹性形变的下载动画,文档附注"成功(success)与失败(fail)"两套呈现,动画口号是"We are not Gif makers, We are developers";
- SpecialProgressBar(zhangke3016):特殊效果进度条,以多套炫目动画区别于常规进度;
- FreshDownloadView(dudu90):下载进度展示 View,下载完成与失败时附带炫酷动画。
选型建议:水位/容量类业务优先水波三件套(WaveLoading、WaveProgressView、WaveLoadingView);下载场景希望"下载过程 + 结果反馈"一体化,则看 ElasticDownload、FreshDownloadView、GADownloading。
6. 下载 / 上传 / 网络进度监听
这一分支解决的不是"画一个进度条",而是"如何拿到全局的传输进度数据",属于进度条领域的进阶话题。
- ProgressManager(JessYanCoding):文档给出的能力是一行代码即可监听 App 中所有网络链接的上传以及下载进度,包括 Glide 的图片加载进度。这类"全局监听"方案的一般思路是在网络层(如 OkHttp 的拦截器机制)统一注入进度回调,再把进度事件派发给各个 UI 控件——从架构上看,它把"进度采集"与"进度展示"解耦,业务方只需一行代码接入即可;需要全局统计上传/下载进度(含图片加载)的工程,这是最值得研究的对象;
- ImageLoadingView(yingLanNull):类似微信图片加载、微博图片加载、视频加载时的进度 View——图片/视频尚未就绪时展示进度,就绪后平滑过渡;
- snackprogressbar(tingyik90):Snackbar 的扩展,在 Snackbar 内显示进度,适合"操作进行中"的轻量提示;
- ProgressRoundButton(cctanfujun):渐变的下载按钮,文档提到"不少小伙伴要做类似效果",即点击下载后按钮本体变为进度环;
- DownloadProgressBar(panwrona):文档强调可以任意方式操纵其状态(成功、失败、进行中等)的下载进度条;
- android-square-progressbar(前文已列):围绕图片绘制进度,同样常用于图片/封面加载场景。
选型建议:需要覆盖全 App 的网络传输进度,首选 ProgressManager 这类全局方案;只想在图片加载时显示进度,ImageLoadingView 更轻量;下载按钮与 Snackbar 场景分别对应 ProgressRoundButton 与 snackprogressbar。
7. 仪表盘、数据可视化与特殊形态
进度语义还可以外延到仪表盘、图表与导航类控件,这类库适合"进度即数据"的展示型业务。
7.1 仪表盘与速度表
- SpeedView(anastr):速度指示器,刻度盘 + 指针形态,适合车速、转速类展示;
- PanelView(githubwing):仪表盘控件,文档列出汽车仪表盘、气压仪表盘等典型用途;
- sc-widgets(Paroca72):一套控件集合,提供车速、气压、百分比等多种仪表形态。
7.2 数据可视化形态
- plain-pie(zurche):简单且可自定义的饼状图,以扇形占比表达数据;
- SegmentedBarView(gspd-mobi):以分段 + 段内数值方式展示数据的自定义控件,适合预算、额度分配类数据;
- stackedhorizontalprogressbar(nisrulz):堆叠式水平进度条,多段进度拼接展示;
- Audiogram(alxrm):轻量音频波形进度条,播放进度以波形呈现;
- segmentedview(czy1121):iOS 风格的分段控件(类似 UISegmentedControl),可辅助"步骤进度"类交互;
- BreadcrumbsView(VictorAlbertos):为**分页表单(paginated forms)**设计的可定制视图,用"面包屑"表达多步骤进度;
- android-material-app-rating(stepstone-tech):评分库,用对话框引导用户打分——以"星级"形态表达评价进度与结果,是进度语义在评分场景的延伸;
- SwipeCoordinator(VictorAlbertos):坐标布局,把触摸事件动画化、类型化为滑动手势,属于进度交互的底层辅助组件;
- ProgressView(WhiteDG):通用自定义进度条,文档描述简洁,适合作为二次改造的起点。
选型建议:车载/运动/硬件类界面用 SpeedView、PanelView、sc-widgets;数据占比类看 plain-pie、SegmentedBarView、stackedhorizontalprogressbar;多步骤流程(表单、引导)用 BreadcrumbsView、SegmentedStepperSeekbar、segmentedview。
8. 实战:如何选型、集成与自定义进度条
8.1 按需求快速选型
| 需求 | 优先考虑 |
|---|---|
| 环形进度展示 | 第 2 节全部;多指标看 ArcProgressStackView / RingProgress |
| 用户拖动调节 | 第 3 节;区间选 material-range-bar,环形调节选 SwagPoints / SeekArc |
| 不确定加载动画 | 第 4 节;资源级替换看 LoadingDrawable / materialish-progress |
| 水波 / 液体效果 | 第 5 节 WaveLoading 系列 |
| 下载 / 上传进度 | 第 6 节 ProgressManager 等 |
| 仪表盘 / 数据可视化 | 第 7 节 SpeedView、PanelView、plain-pie 等 |
8.2 集成流程(通用步骤)
无论选择上述哪一个库,接入流程大体一致(具体依赖坐标以各库文档为准):
- 在模块级
build.gradle中添加对应库的依赖; - 在布局 XML 中声明该自定义 View,按库文档配置
max、progress、颜色、尺寸等属性; - 在代码中通过
setProgress(...)或setValue(...)更新进度; - 需要交互的库(SeekBar 系列)实现各自的进度监听回调。
8.3 自定义进度条的最小实现骨架
理解上述开源库的共同底层能力,有助于遇到"库不满足需求"时自行实现。一个自定义进度条的核心是:
public class MyProgressView extends View { private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); private int progress; // 0..max private int max = 100; @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 1. 画背景轨道(圆环 / 水平条) // 2. 按 progress / max 计算扫过角度或长度 // 3. 画前景进度 } public void setProgress(int progress) { this.progress = progress; invalidate(); // 触发重绘 } }关键点:用ValueAnimator做进度插值以获得平滑动画;onDraw中避免频繁创建对象(复用Paint、Path等),防止卡顿;涉及网络进度时,把"数据采集(回调层)"与"绘制(View 层)"解耦,这正是 ProgressManager 一类库的架构启示。
9. 延伸:AndroidLibs 中的相邻分类
进度条控件常与其他分类组合使用,本仓库的相邻分类文档可继续深入:
- 特效Effect/README.md:进度动画与特效实现可交叉参考;
- 自定义控件Custom/README.md:无法归入进度条细分的自定义 View 聚集于此;
- 动画Animation/README.md:进度条动画的底层驱动知识;
- 图片框架Image/README.md:图片加载进度(如 ImageLoadingView)与图片框架联动;
- 网络框架Network/README.md:网络请求进度监听的传输层知识;
- 弹框Dialog/README.md:AnimatedLoadingIndicator 这类"对话框 + 加载动画"的组合形态;
- 按钮Button/README.md:ProgressRoundButton、FABProgressCircle 等"按钮 + 进度"组合形态。
结语
本文以 进度条Progressbar/README.md 为基础,将 97 个进度条相关开源库按"环形进度、SeekBar 滑块、加载动画、水波特效、网络进度、仪表盘可视化"六大方向完成归类,并补充了原生 ProgressBar / SeekBar 的基础坐标、按需求选型的方法论以及自定义进度条的最小实现骨架。实际开发中,建议先明确"展示型还是交互型、确定还是不确定、水平还是异形、单控件还是全局监听"四个问题,再对照本文各节的清单快速圈定候选库,最后结合各库文档验证属性与 API 细节后落地。
- 文档
- 知识库
【免费下载链接】AndroidLibs
:fire:正在成为史上最全分类 Android 开源大全~~~~(长期更新 Star 一下吧)
相关推荐
awesome-ios-animation 进度动画专题:iOS 加载指示器、进度 HUD、环形进度与仪表盘开源库实战指南
awesome ios animation 进度动画专题:iOS 加载指示器、进度 HUD、环形进度与仪表盘开源库实战指南 本篇技术指南以 awesome io
Godot-demo-projects异步场景加载:进度条与加载动画实现
Godot demo projects异步场景加载:进度条与加载动画实现 痛点直击:告别卡顿的游戏体验 你是否还在为Godot项目中场景切换时的卡顿烦恼?当玩家
示例工程Playnite:一站式游戏库管理神器,轻松整合所有平台游戏
Playnite:一站式游戏库管理神器,轻松整合所有平台游戏 你是否厌倦了在Steam、Epic、GOG、EA App、Battle.net等多个游戏平台之间来
桌面应用游戏开发
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考