Android动态自定义圆形进度条
发布时间 - 2026-01-10 23:22:59 点击率:次效果图:
A.绘制圆环,圆弧,文本
//1.画圆环 //原点坐标 float circleX = width / 2; float circleY = width / 2; //半径 float radius = width / 2 - roundWidth / 2; //设置画笔的属性 paint.setColor(roundColor); paint.setStrokeWidth(roundWidth); paint.setStyle(Paint.Style.STROKE); canvas.drawCircle(circleX, circleY, radius, paint); //2.画圆弧 RectF oval = new RectF(roundWidth/2,roundWidth/2,width-roundWidth/2,width - roundWidth/2); paint.setColor(roundProgressColor); canvas.drawArc(oval, 0, progress * 360 / max, false, paint); //3.画文本 paint.setTextSize(textSize); paint.setColor(textColor); paint.setStrokeWidth(0); String text = progress * 100 / max + "%"; Rect bounds = new Rect(); paint.getTextBounds(text, 0, text.length(), bounds); canvas.drawText(text, width / 2 - bounds.width() / 2, width / 2 + bounds.height() / 2, paint);
B.自定义属性的具体步骤
具体步骤:
1. 定义属性: 在values目录下创建attrs.xml
<declare-styleable name="RoundProgress"> <attr name="roundColor" format="color"></attr> <attr name="roundProgressColor" format="color"></attr> <attr name="textColor" format="color"></attr> <attr name="roundWidth" format="dimension"></attr> <attr name="textSize" format="dimension"></attr> </declare-styleable>
2. 在布局文件中引用当前应用的名称空间
xmlns:atguigu=http://schemas.android.com/apk/res-auto
3. 在自定义视图标签中使用自定义属性
<com.atguigu.p2p.util.RoundProgress android:id="@+id/rp_home_progress" android:layout_width="120dp" android:layout_height="120dp" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" atguigu:roundColor="@android:color/darker_gray <br> atguigu:roundProgressColor="@android:color/holo_red_dark" atguigu:textColor="@color/text_progress" atguigu:roundWidth="10dp" atguigu:textSize="20sp" />
4. 在自定义View类的构造方法中, 取出布局中的自定义属性值
//1.得到所有自定义属性的数组 TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundProgress); //2.获取自定义属性的值, 如果没有指定取默认值 roundColor = typedArray.getColor(R.styleable.RoundProgress_roundColor, Color.RED); roundProgressColor = typedArray.getColor(R.styleable.RoundProgress_roundProgressColor, Color.GREEN); textColor = typedArray.getColor(R.styleable.RoundProgress_textColor, Color.GREEN); roundWidth = typedArray.getDimension(R.styleable.RoundProgress_roundWidth, UIUtils.dp2px(10)); textSize = typedArray.getDimension(R.styleable.RoundProgress_textSize, UIUtils.dp2px(20)); //3.释放资源数据 typedArray.recycle();
C.让圆环进度"动起来"
1.自定义RoundProgress类中提供进度属性的getter和setter方法
2.在HomeFragment的onSuccess()中:
github:https://github.com/ganchuanpu/P2PInvest
以上所述是小编给大家介绍的Android动态自定义圆形进度条,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 自定义圆形进度条
# 圆形进度条
# Android自定义圆形进度条效果
# Android自定义圆形进度条
# Android 实现自定义圆形进度条的实例代码
# Android 实现自定义圆形进度条的功能
# Android实现自定义圆形进度条
# Android三种方式实现ProgressBar自定义圆形进度条
# Android 实现自定义圆形进度条的三种常用方法
# 自定义
# 小编
# 在此
# 给大家
# 如果没有
# 所述
# 给我留言
# 感谢大家
# 默认值
# 类中
# 疑问请
# 有任何
# 进度条
# 目录下
# textColor
# String
# setTextSize
# textSize
# false
# drawArc
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
北京网站制作的公司有哪些,北京白云观官方网站?
韩国服务器如何优化跨境访问实现高效连接?
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面
如何确认建站备案号应放置的具体位置?
如何在阿里云ECS服务器部署织梦CMS网站?
高性价比服务器租赁——企业级配置与24小时运维服务
Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】
海南网站制作公司有哪些,海口网是哪家的?
Laravel如何实现数据库事务?(DB Facade示例)
如何在 Pandas 中基于一列条件计算另一列的分组均值
Laravel如何实现API版本控制_Laravel API版本化路由设计策略
如何在阿里云虚拟主机上快速搭建个人网站?
音响网站制作视频教程,隆霸音响官方网站?
详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
Laravel如何处理异常和错误?(Handler示例)
如何在云指建站中生成FTP站点?
Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
如何获取上海专业网站定制建站电话?
Laravel如何自定义错误页面(404, 500)?(代码示例)
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Laravel如何实现一对一模型关联?(Eloquent示例)
Laravel distinct去重查询_Laravel Eloquent去重方法
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
装修招标网站设计制作流程,装修招标流程?
Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程
Linux系统运维自动化项目教程_Ansible批量管理实战
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
jquery插件bootstrapValidator表单验证详解
Linux网络带宽限制_tc配置实践解析【教程】
Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)
网站制作大概多少钱一个,做一个平台网站大概多少钱?
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
javascript基于原型链的继承及call和apply函数用法分析
UC浏览器如何设置启动页 UC浏览器启动页设置方法
android nfc常用标签读取总结
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
如何用美橙互联一键搭建多站合一网站?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
网站制作大概要多少钱一个,做一个平台网站大概多少钱?

