恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

继承CompoundButton的设计巧思:ProgressButton如何玩转“图钉+进度“双状态

  • 首页
  • 资讯中心
  • /
  • 继承CompoundButton的设计巧思:ProgressButton如何玩转“图钉+进度“双状态

相关资讯

从零构建AI Agent:基于Codex框架的完整开发与部署指南 2026/8/24 8:12:05
Lightscreen截图全模式详解:全屏、区域、活动窗口、指定窗口4种玩法一次讲清 2026/8/24 8:12:05
如何用 awesome-blender 精选清单搭建你的 Blender 免费资源库 2026/8/24 8:07:05

最新资讯

深入Linux内核TCP状态机:从原理到实战排查网络连接问题
255.verilog文件注释代码头
Linux内核TCP状态机深度解析:从原理到实战排查网络问题
深入解析Linux TCP状态机:从原理到实战调优
深入解析Linux TCP状态机:从TIME_WAIT到CLOSE_WAIT的故障排查指南
Google推出noai元标签:内容出版商如何应对AI摘要的流量挑战

今日推荐

OpenModScan:免费跨平台 Modbus 主站调试工具,让现场通讯验证一键搞定
WechatHook 终极指南:5大核心能力详解,3分钟看懂微信自动化
如何在ThinkPad X390上安装macOS:OpenCore EFI完整指南

本周热门

Nextcloud 桌面客户端:把同步交给它,你只管改文件
如何将 HTML 转成 Word 文档且格式不丢失?html-to-docx 使用教程
Anki 批量操作卡片完整指南:一次搞定上千张,不再逐张修改

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

继承CompoundButton的设计巧思:ProgressButton如何玩转“图钉+进度“双状态

发布时间:2026/8/24 8:12:05
继承CompoundButton的设计巧思:ProgressButton如何玩转“图钉+进度“双状态 继承CompoundButton的设计巧思ProgressButton如何玩转图钉进度双状态【免费下载链接】progressbuttonA custom progress indicator with a tiny footprint.项目地址: https://gitcode.com/gh_mirrors/progre/progressbuttonProgressButton 是一个专为 Android 打造的图钉进度按钮Pin Progress Button用一个小小的圆形控件同时表达内容是否已固定和下载进度到哪了两件事。它的核心设计只有一句话继承自 CompoundButton让图钉状态免费复用了勾选框、开关按钮成熟的两状态交互体系。本文将带你快速看懂这套设计以及如何在自己的 App 里 5 分钟接入。为什么选 CompoundButton一行继承拿回整套两状态打开核心源码 ProgressButton.java你会看到整个类的第一行声明public class ProgressButton extends CompoundButtonCompoundButton 是 Android 里 CheckBox、RadioButton、ToggleButton 的共同基类天然自带选中/未选中两状态。ProgressButton 把已固定pinned映射为选中态、未固定unpinned映射为未选中态于是以下能力全部免费获得免费获得的能力对应 API查询/设置图钉状态isChecked()/setChecked()语义化的固定/取消固定isPinned()/setPinned()点击自动翻转状态toggle()状态变化监听无障碍、联动刷新setOnCheckedChangeListener()isPinned()内部只做了两件事——调用isChecked()setPinned()则在setChecked()之外补了一次invalidate()重绘ProgressButton.java。单元测试 ProgressButtonTest.java 专门验证了setPinned、toggle与监听器通知的行为这套薄封装正是本文标题中设计巧思的第一层不重复造轮子只做语义映射。三层绘制怎么叠阴影、进度环、图钉视觉上的图钉 进度环组合全部由onDraw()一笔笔画出来ProgressButton.java绘制顺序决定了层级关系底层进度环先画一整圈灰色圆环背景色再用drawArc()从 12 点钟方向按360 * progress / max的角度画出发光弧段——进度条由此而来中间图标层根据isChecked()的当前值在环内绘制对应的图钉 Drawable——选中画白色竖图钉未选中画灰色斜图钉顶层阴影最后叠加一层阴影 Drawable让图钉产生钉在环上的立体感。注意一个小细节进度弧段始终绘制在图钉下方所以无论图钉处于哪种朝向进度环都能清晰可读——这就是双状态互不干扰的视觉保证。两种玩法XML属性与代码方法双通道ProgressButton 支持 16 个自定义属性声明于 attrs.xml常用项如下progress/max当前进度与最大值默认 0 / 100circleColor/progressColor背景环颜色、进度弧颜色pinned/pinnedDrawable/unpinnedDrawable/shadowDrawable初始固定状态与三张状态图animating/animationSpeed/animationDelay/animationStripWidth不确定状态动画参数在布局里只需一个标签示例见 activity_main.xmlcom.f2prateek.progressbutton.ProgressButton android:idid/pin_progress_1 android:layout_widthwrap_content android:layout_heightwrap_content progress66 circleColor#B3B6B9 progressColor#1192E7/代码通道则是一组简洁的 setter任何时刻都能驱动两种状态button.setPinned(true); // 切换图钉状态 button.setProgress(45); // 更新下载进度默认样式定义在 styles.xml所有取值都有合理默认值示例 App 中还演示了不可点击的纯展示按钮与setClickable(true)的可交互按钮两种形态MainActivity.java这也是继承自 CompoundButton 的收益——可点击与否完全由你决定只做进度指示时保持默认不可点击需要用户固定/取消固定内容时打开点击即可。不确定状态动画与进度自动恢复下载任务不知道还要多久时ProgressButton 提供不确定进度动画startAnimating()启动后一条小弧段会绕环持续旋转stopAnimating()停止ProgressButton.java速度、帧间隔、弧段宽度均可通过animationSpeed、animationDelay、animationStripWidth三个参数微调。更贴心的是状态恢复ProgressButton 自定义了SavedStateProgressButton.java把progress和max一并存入 Parcelable。即使系统因内存不足回收了你的 Activity旋转中的图钉进度按钮也能原样复原——ProgressButtonTest.java 中的onSaveInstanceState测试专门保证了这一点。快速上手 ProgressButton 图钉按钮通过 Maven 引入com.f2prateek.progressbutton:progressbutton坐标见根目录 pom.xml 与 progressbutton/pom.xml布局中添加com.f2prateek.progressbutton.ProgressButton标签按需设置progress、颜色等属性下载回调中调用setProgress()实时刷新弧段任务开始/结束时用startAnimating()/stopAnimating()切换动画运行progressbutton-samples/目录下的示例 App对照Via XML与Via Code两行按钮直观感受双状态的全部组合。小结ProgressButton 用继承 CompoundButton这一个决定优雅地把图钉的两状态交互、监听回调、可点击行为全部收敛进标准 Android 控件体系再用不到 500 行代码补上了进度环绘制、不确定动画与状态恢复。如果你需要为列表项、卡片式布局添加一个小而完整的图钉下载指示器它是一个几乎零学习成本的理想选择。【免费下载链接】progressbuttonA custom progress indicator with a tiny footprint.项目地址: https://gitcode.com/gh_mirrors/progre/progressbutton创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号