CircleProgressBar

2023-05-16

今天又写了一个demo,带有两个进度值的 圆环进度条,原谅我是个小白,只能写一写简单的自定义控件,我会继续努力的。。先看效果图

001.gif

<pre>
@Override
protected void onDraw(Canvas canvas) {
/*偏移量*/
float dMax = (dotDiameter - maxProgressWidth)*0.5F;
float dFirst = (dotDiameter - firstProgressWidth)*0.5F;
float dSecond = (dotDiameter - secondProgressWidth)*0.5F;
/*1.圆心(x,y)坐标值*/
float centerX = (width - getPaddingLeft() - getPaddingRight()) / 2.0f;
float centerY = (height - getPaddingTop() - getPaddingBottom()) / 2.0f;
/*2.圆环半径*/
float maxRadius = centerY - maxProgressWidth / 2;
float firstRadius = centerY - firstProgressWidth / 2;
float secondRadius = centerY - secondProgressWidth / 2;
if (getWidth() >= getHeight()) {
maxRadius = centerY - maxProgressWidth / 2;
firstRadius = centerY - firstProgressWidth / 2;
secondRadius = centerY - secondProgressWidth / 2;
} else {
maxRadius = centerX - maxProgressWidth / 2;
firstRadius = centerX - firstProgressWidth / 2;
secondRadius = centerX - secondProgressWidth / 2;
}

maxRectF.left =  centerX - maxRadius + dMax;
maxRectF.right = centerX + maxRadius - dMax;
maxRectF.top = centerY - maxRadius + dMax;
maxRectF.bottom = centerY + maxRadius - dMax;

firstRectF.left =  centerX - firstRadius + dFirst;
firstRectF.right = centerX + firstRadius - dFirst;
firstRectF.top = centerY - firstRadius + dFirst;
firstRectF.bottom = centerY + firstRadius - dFirst;

secondRectF.left = centerX - secondRadius + dSecond;
secondRectF.right = centerX + secondRadius - dSecond;
secondRectF.top = centerY - secondRadius + dSecond;
secondRectF.bottom = centerY + secondRadius - dSecond;

canvas.drawArc(maxRectF, 0, 360 , false, maxProgressPaint);

float firstAngle = (float) 360 \* firstProgress / (float) maxProgress;
float secondAngle = ((float) 360 \* secondProgress / (float) maxProgress);
float dotAngle =  (float) (Math.PI\*secondAngle/180.0F);

canvas.drawArc(firstRectF, 0 - 90, firstAngle, false, firstProgressPaint);
canvas.drawArc(secondRectF, 0 - 90, secondAngle , false, secondProgressPaint);

float dotCx = (float) (width\*0.5 + (width - dotDiameter)\*0.5 \* Math.sin(dotAngle));
float dotCy = (float) (height\*0.5 - (height -dotDiameter) \*0.5 \* Math.cos(dotAngle));
if(canDisplayDot){
    canvas.drawCircle(dotCx, dotCy, dotDiameter \* 0.5F, dotPaint);
}

}
</pre>

源码地址

<a href="https://github.com/Alex-Cin/CircleProgressBar">https://github.com/Alex-Cin/CircleProgressBar</a>

apk 下载地址

<a href="http://fir.im/z3xb">http://fir.im/z3xb</a>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CircleProgressBar 的相关文章

  • 设计模式-工厂模式

    xl echo编辑整理 xff0c 欢迎转载 xff0c 转载请声明文章来源 欢迎添加echo微信 微信号 xff1a t2421499075 进行交流学习 百战不败 xff0c 依不自称常胜 xff0c 百败不颓 xff0c 依能奋力前行
  • IBM AIX5.3 linux下C/C++实现HTTPS接口

    最近在工作中需要开发一个Https接口 xff0c 其不同于http soap等协议 xff0c 可以直接组织报文并发送 xff0c 不存在加密 xff0c 认证和获取密钥等安全操作 且之前开发的项目没有开发过这类接口 xff0c 所以当时
  • c语言把网络字节序转换成小端,网络编程字节序转换问题

    一 xff1a 大小端 一 大小端区别 字节 区别是依据 xff1a 计算机系统在存储数据时起始地址是高地址仍是低地址 小端 xff1a 从低地址开始存储 大端 xff1a 从高地址开始存储 补充 xff1a 这里大小端是按字节区别的 xf
  • [转载]Linux C 字符串函数 sprintf()、snprintf() 详解

    一 sprintf 函数详解 在将各种类 型的数据构造成字符串时 xff0c sprintf 的强大功能很少会让你失望 由于 sprintf 跟 printf 在用法上几乎一样 xff0c 只是打印的目的地不同而已 xff0c 前者打印到字
  • http Authorization

    MDN 文档 HTTP协议中的 Authorization 请求消息头含有服务器用于验证用户代理身份的凭证 xff0c 通常会在服务器返回401 Authorization lt type gt lt credentials gt curl
  • linux编译动态库未定义,GCC链接库的一个坑:动态库存在却提示未定义动态库的函数...

    背景 在GCC中已经指定链接库 xff0c 然而编译时却提示动态库函数未定义 xff01 测试出现的错误提示如下 xff1a GMPY 64 13 48 tmp gcc o test L lmylib test c tmp ccysQZI3
  • .inf右键没有安装菜单项解决办法

    打开我的电脑 xff0c 工具菜单中的文件夹选项 切换至文件类型选项卡 xff0c 在其中找到inf文件 xff0c 点高级按钮 xff0c 双击安装 I xff0c 没有新建一个 按如下内容修 改 用于执行操作的应用程序C WINDOWS
  • C++ : 编译单元、声明和定义、头文件作用、防止头文件在同一个编译单元重复引用、static和不具名空间...

    转 自 xff1a http www cnblogs com rocketfan archive 2009 10 02 1577361 html 1 编译单元 xff1a 一个 cc或 cpp文件作为一个编译单元 xff0c 生成 o 2
  • request方法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1request概述 request是Servlet service 方法的一个参数 xff0c 类型为javax servlet http HttpServletRequ
  • Eclipse调试:改变颜色, 背景与字体大小 和xml字体调整

    Eclipse背景颜色修改 xff1a 操作界面默认颜色为白色 对于我们长期使用电脑编程的人来说 xff0c 白色很刺激我们的眼睛 xff0c 所以我经常会改变workspace的背景色 xff0c 使眼睛舒服一些 设置方法如下 xff1a
  • ASM汇编常用跳转指令-极速查

    作者 xff1a 逆向驿站 微信公众号 xff1a 逆向驿站 知乎 xff1a 逆向驿站 若不是老鸟 xff0c 是不是经常为各种JXX汇编跳转指令查资料 xff1f 影响效率 xff0c 更影响潜意识整体分析的 34 灵光一现 34 本公
  • Android签名机制及原理

    Android签名机制及原理 Android系统在安装APK的时候 xff0c 首先会检验APK的签名 xff0c 如果发现签名文件不存在或者校验签名失败 xff0c 则会拒绝安装 xff0c 所以应用程序在发布之前一定要进行签名 给APK
  • chrome扩展获取页面dom对象信息

    chrome扩展 xff0c 在popup页面 xff0c 给页面对象绑定点击事件 xff0c 获取当前tab加载页面的DOM对象信息 本chrome扩展功能主要用于获取百度搜索输入框中用户输入的关键字 效果如下 源代码如下 注意 xff1
  • CentOS 7之FirewallD与iptables的区别

    2019独角兽企业重金招聘Python工程师标准 gt gt gt FirewallD 即Dynamic Firewall Manager of Linux systems xff0c Linux系统的动态防火墙管理器 xff0c 是 ip
  • goland编辑器护眼背景颜色设置

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 打开goland软件 菜单栏 file settings 打开如下 搞定 色调 xff1a 85 xff1b 饱和度 xff1a 123 xff1b 亮度 xff1a 20

随机推荐

  • 让IE8支持HTML5及canvas功能!

    让IE8支持HTML5及canvas功能 xff01 微软出的IE9支持HTML5 xff0c 但因为不支持XP系统 xff0c 暂时我还用不了 即使能用 xff0c 现阶段如果开发HTML5页面 xff0c 并考虑到兼容性问题的话 xff
  • 卷积神经网络(CNN)的训练过程

    卷积神经网络的训练过程 卷积神经网络的训练过程分为两个阶段 第一个阶段是数据由低层次向高层次传播的阶段 xff0c 即前向传播阶段 另外一个阶段是 xff0c 当前向传播得出的结果与预期不相符时 xff0c 将误差从高层次向底层次进行传播训
  • 编程常用英语词汇大全

    编程常用英语词汇大全 很实用的编程英语词库 xff0c 共收录一千五百余条词汇 第一部分 xff1a application 应用程式 应用 应用程序 application framework 应用程式框架 应用框架 应用程序框架 arc
  • [LTMP搭建] Centos 6.5 安装配置 Tengine

    接上篇 xff1a http www cnblogs com antarctican p 3752812 html 安装PHP 一 安装依赖的扩展 记得前几天编译tengine xff0c 不使用 with http lua module
  • .net项目移植后的虚拟目录的配置问题

    VS NET 2003 开发环境打开此项目 xff08 MyWeb xff09 时 xff0c 出现如果如下问题 xff1a 无法从 Web 服务器获取项目文件 无法打开 Web 项目 MyWeb 文件路径 C Inetpub wwwroo
  • JS 柯里化 (curry)

    用 JS 理解柯里化 函数式编程风格 xff0c 试图以函数作为参数传递 xff08 回调 xff09 和无副作用的返回函数 xff08 修改程序的状态 xff09 很多语言采用了这种编程风格 JavaScript xff0c Haskel
  • C语言头文件编程,C语言编程规范-头文件(Day2)

    1 头文件 背景 对于C语言来说 xff0c 头文件的设计体现了大部分的系统设计 不合理的头文件布局是编译时间过长的根本原因 xff0c 不合理的头文件实际上是不合理的设计 术语定义 依赖 xff1a 本章节特指编译依赖 若x h包含y h
  • Win10共享打印机所需要的设置(无需密码访问实现打印机共享,共享不要密码)...

    原文 xff1a https m baidu com from 61 1086k bd page type 61 1 ssid 61 0 uid 61 0 pu 61 usm 64 0 sz 64 1320 1002 ta 64 iphon
  • RBF神经网络的matlab简单实现

    径向基神经网络 1 径向基函数 Radial Basis Function xff0c RBF 神经网络是一种性能良好的前向网络 xff0c 具有最佳逼近 训练简洁 学习收敛速度快以及克服局部最小值问题的性能 xff0c 目前已经证明径向基
  • npm不是以管理身份运行遇到的问题

    环境 win10 43 npm3 10 5 问题 在npm install lodash时 出现下列错误 34 npm debug log 34 文件内容 0 info it worked if it ends with ok 1 verb
  • JSON_VALUE

    本页目录 语法入参功能描述示例 语法 span class pln style color rgb 0 0 0 VARCHAR JSON VALUE span span class pun style color rgb 102 102 0
  • 浮点数的表示方法

    计算机中浮点数的表示 never2die 长江大学湖北荆州 中文摘要 xff1a 本文介绍了浮点数在计算机中的几种表示方法 xff0c 并对此进行整理分析 xff0c 为人们以后做此方面的研究提供参考 中文关键词 xff1a 浮点数 xff
  • matlab 中atan2函数的介绍

    atan2 a b 是4象限反正切 xff0c 它的取值不仅取决于正切值a b xff0c 还取决于点 b a 落入哪个象限 xff1a 当点 b a 落入第一象限时 xff0c atan2 a b 的范围是 0 pi 2 当点 b a 落
  • 研究生毕业入职阿里,2年升职到P7,晒出真实月薪,以为看错了

    互联网企业已经成为现在大部分年轻人选择职业打拼的行业 xff0c 这个行业机会多 xff0c 有各种各样的职位和机会留给优秀的年轻人去闯 xff0c 但是相应的压力也非常大 毕竟高薪水的待遇下 xff0c 工作压力又怎么会轻松的了呢 xff
  • mac清理软件哪个好用?五大Mac Cleaner介绍推荐

    还在找好用的Mac清理软件吗 xff1f 你的Mac变慢了吗 xff1f 如果给你的Mac安装一款Mac清理软件 xff0c 可以删除Mac中不需要的垃圾文件 xff0c 以释放Mac的磁盘空间和内存 不知道mac清理软件哪个好用 xff1
  • 解决"SSL handshake failed"问题

    前阵子不知是对Ubuntu动了些啥 xff0c 结果Ubuntu One死活也不上 App Center上点击 34 Buy 34 按钮会提示 34 SSL handshake failed 34 猜想大概是由于同一问题导致的 网上给出的解
  • 当在Win8下安装msi类型的文件出现errorcode 2503的解决方法

    Win8安装程序出现2502 2503错误解决方法 在Win8中 xff0c 在安装msi安装包的时候常常会出现代码为2502 2503的错误 其实这种错误是由于安装权限不足造成的 xff0c 可以这种msi的安装包不像其他exe的安装程序
  • 极限编程实践

    摘自 xff1a 敏捷软件开发 xff1a 原则 模式与实践 Robert C Martin 著 xff0c 邓辉 译 极限编程实践 xff1a 1 完整团队 XP项目的所有参与者 xff08 开发人员 业务分析师 测试人员等等 xff09
  • keil5c语言定义引脚,keil编写C程序是不是不能在函数内定义变量啊,求大神

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 肯定可以的 xff1a 比如 程序动态显示字符 显示光标和光标闪烁打开效果 include 包含头文件 xff0c 义 include sbit RS 61 P2 4 定义端口 sbit RW
  • CircleProgressBar

    今天又写了一个demo xff0c 带有两个进度值的 圆环进度条 xff0c 原谅我是个小白 xff0c 只能写一写简单的自定义控件 xff0c 我会继续努力的 先看效果图 001 gif lt pre gt 64 Override pro