Android开发--ProgressBar应用显示测点数量

1.自定义ProgressBarView

public class ProgressBarView extends View {private Paint mPaintBack;private Paint mPaint;private Paint mPaintText;private float process;int strokeWidth = 3;//圈宽度int textSize= 17;//字大小private long duration = 1000;private float startDegree = 0;private float endDegree = 360;private float total = 16; // 默认总数为16private int color = Color.GRAY; // 默认颜色为灰色private String name = "在线测点";private String number = "0";public ProgressBarView(Context context) {super(context);init();}public ProgressBarView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);init();}public ProgressBarView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {mPaintBack = new Paint();mPaintBack.setColor(Color.GRAY);mPaintBack.setStyle(Paint.Style.STROKE);mPaintBack.setAntiAlias(true);mPaintBack.setStrokeCap(Paint.Cap.ROUND);mPaintBack.setStrokeWidth(strokeWidth);mPaint = new Paint();mPaint.setColor(color);mPaint.setStyle(Paint.Style.STROKE);mPaint.setAntiAlias(true);mPaint.setStrokeCap(Paint.Cap.ROUND);mPaint.setStrokeWidth(strokeWidth);mPaintText = new Paint();mPaintText.setAntiAlias(true);mPaintText.setStyle(Paint.Style.FILL_AND_STROKE);mPaintText.setColor(color);mPaintText.setStrokeCap(Paint.Cap.ROUND);mPaintText.setTextSize(sp2px((int)textSize));}public void setStrokeWidth(int width) {strokeWidth = width;}public void setTextSize(int textSize) {this.textSize = textSize;}public void setDuration(long duration) {this.duration = duration;}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);// 创建圆环矩形RectF rectF = new RectF(strokeWidth, strokeWidth, getWidth() - strokeWidth, getHeight() - strokeWidth);// 画出背景进度条canvas.drawArc(rectF, 0, 360, false, mPaintBack);// 画进度条canvas.drawArc(rectF, 0, process, false, mPaint);// 设置文字在canvas中的位置Paint.FontMetrics fm = mPaintText.getFontMetrics();int mTxtWidth = (int) mPaintText.measureText(number, 0, number.length());int mTxtHeight = (int) Math.ceil(fm.descent - fm.ascent);int x = getWidth() / 2 - mTxtWidth / 2;int y = getHeight() / 2;canvas.drawText(number, x, y, mPaintText);canvas.drawText(name, x-(int) (mPaintText.measureText(name, 0, name.length())/3), y + mTxtHeight, mPaintText);}/*** 设置传入总测点数*/public void setTotal(float total) {this.total = total;}/*** 设置传入name*/public void setName(String name) {this.name = name;}/*** 设置传入颜色*/public void setColor(int color) {this.color = color;mPaint.setColor(color);mPaintText.setColor(color);}/*** 设置传入测点数*/public void setProgress(float progress) {float angle = (progress / total) * 360;startDegree = 0;endDegree = angle;// 更新number的值number = String.valueOf((int)progress);invalidate();}/*** 设置动画效果*/public void start() {ValueAnimator valueAnimator = ValueAnimator.ofFloat(startDegree, endDegree);valueAnimator.setDuration(duration);valueAnimator.setInterpolator(new DecelerateInterpolator());valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {float value = (float) animation.getAnimatedValue();process = (int)value;invalidate();}});valueAnimator.start();}private int sp2px(int sp) {return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp,getResources().getDisplayMetrics());}
}

2.XML引用

<com.afison.newfault.view.ProgressBarViewandroid:id="@+id/pb_ele"android:layout_width="108dp"android:layout_height="108dp"android:layout_marginEnd="@dimen/margin_big"android:layout_marginTop="@dimen/margin_medium"android:layout_marginBottom="@dimen/margin_medium"></com.afison.newfault.view.ProgressBarView>

3.更新UI

pbEle.setColor(getResources().getColor(R.color.pbBlue));pbEle.setName("电流测点");pbEle.setTotal(16);pbEle.setProgress(14);pbEle.start();

4.效果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659883.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一站式在线APP封装平台的革新之旅

随着移动互联网的快速发展&#xff0c;App已经成为我们日常生活中不可或缺的一部分。对于开发者而言&#xff0c;将创新的应用快速打包成APK格式&#xff0c;并进行有效分发&#xff0c;是确保应用生命周期成功的关键一步。传统的App打包过程往往需要复杂的环境配置、依赖管理以…

扩展学习|大数据分析整合到价值创造的大见解

文献来源:Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接:链接:https://pan.baidu.com/s/14IGaCOc-plxAiaVhwOgUvA 提取码…

Mamba系列日积月累(一):状态空间模型SSM的离散化过程推导

文章目录 1. 背景基础知识1.1 什么是状态空间模型&#xff08;State Space Model&#xff0c;SSM&#xff09;&#xff1f;1.2 什么是离散化&#xff08;Discretization&#xff09;&#xff1f;1.3 为什么需要离散化&#xff1f; 2. SSM离散化过程推导2.1 为什么在离散化过程中…

mybatis中使用小于号

mybatis中小于号没有办法直接写 方式一需要使用特殊转义字符&#xff1a; <例子 <select id"selectRolesPage" parameterType"java.util.Map" resultType"com.leilankeji.cn.dao.SysRole" >select*from t_sys_role<where><i…

无人机除冰保障电网稳定运行

无人机除冰保障电网稳定运行 近日&#xff0c;受低温雨雪冰冻天气影响&#xff0c;福鼎市多条输配电线路出现不同程度覆冰。 为保障福鼎电网安全可靠运行&#xff0c;供电所员工运用无人机飞行技术&#xff0c;通过在无人机下方悬挂器具&#xff0c;将无人机飞到10千伏青坑线…

电脑和手机连接酒店的wifi,网络不通导致charles无法抓手机的包

查看苹果手机&#xff0c;连wifi后的ip地址 电脑去ping 手机的ip地址&#xff0c;发现ping不通 解决方案&#xff1a; 应该是酒店wifi的问题&#xff0c;让朋友开个手机热点&#xff0c;电脑和我的手机都连这个热点&#xff0c;就可以抓包了

2024.1.31每日一题

LeetCode 找出不同元素数目差数组 2670. 找出不同元素数目差数组 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个下标从 0 开始的数组 nums &#xff0c;数组长度为 n 。 nums 的 不同元素数目差 数组可以用一个长度为 n 的数组 diff 表示&#xff0c;其中 di…

OG Trade在ZKX揭幕:一家基于Starknet的游戏化永续合约交易所

ZKX的 OG Trade通过内置游戏化和30分钟交易竞赛&#xff0c;为所有交易者创造机会&#xff0c;革新了永续合约交易模式。 2024年1月30日 — ZKX宣布推出OG Trade&#xff0c;这是一家基于Starknet的游戏化永续合约交易所&#xff0c;旨在满足短期交易者、高水平交易者和波段交易…

Java后端须知的前端知识

Java后端须知的前端知识 HTML &#xff08;超文本标记语言&#xff09; W3C标准 结构&#xff1a;HTML表现&#xff1a;CSS行为&#xff1a;JavaScript 快速入门 <html><head><title></title></head><body><font color"red&q…

【保姆级教程】Windows11下go-zero的etcd安装与初步使用

【Go-Zero】Windows11下etcd的安装与初步使用 大家好 我是寸铁&#x1f44a; 总结了一篇Windows11下etcd的安装与初步使用的文章✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言&#xff1a; 在使用etcd 前&#xff0c;我们需要了解一下etcd 是什么&#xff0c;为什么使用etcd…

日本大带宽服务器速度和性能评测的关系

在互联网的快速发展中&#xff0c;大带宽服务器在提供高速、稳定的数据传输方面起着至关重要的作用。特别是在日本&#xff0c;由于其先进的网络基础设施和庞大的互联网用户群体&#xff0c;大带宽服务器的需求日益增长。那么&#xff0c;日本大带宽服务器的速度和性能评测有何…

x-shell常用命令总结

1、上传和下载文件 # 命令rz会弹出一个文件选择窗口&#xff0c;从本地选择文件上传到Linux服务器。 sudo rz #命令sz将选定的文件发送&#xff08;send&#xff09;到本地机器 sudo sz file 如果显示没有这两个命令&#xff0c;那就先安装&#xff1a; yum install lrzsz如果…

机器学习数学基础

机器学习基础 1、标量、向量、矩阵、张量2、概率函数、概率分布、概率密度、分布函数3、向量的线性相关性4、最大似然估计5、正态分布(高斯分布)6、向量的外积(叉积)7、向量的内积(点积)8、超平面(H)1、标量、向量、矩阵、张量 标量、向量、矩阵和张量是线性代数中不同…

回溯--39. 组合总和/medium 理解度C

39. 组合总和 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意…

探索工业以太网交换机的新纪元:满足多元化市场需求

在当今数字化的时代&#xff0c;工业以太网交换机作为信息网络的核心枢纽&#xff0c;扮演着至关重要的角色。它们连接着各种设备&#xff0c;实现数据的快速传输与稳定交换&#xff0c;为工业自动化、物联网和智能制造提供了可靠的基础设施。随着数字化转型的不断深入&#xf…

媒体查询的使用

媒体查询的使用 media media-type and (media-feature) {/* 在满足特定媒体条件时应用的CSS样式 */ }media-type&#xff1a;可选&#xff0c;媒体类型&#xff0c;例如 all&#xff08;所有设备&#xff09;、print&#xff08;打印预览&#xff09;、screen&#xff08;屏幕…

VBoxManage 命令行使用

VBoxManage&#xff1a; 序号命令作用1VBoxManage list vms# 查看当前所有虚拟机2VBoxManage list runningvms # 查看当前正在运行的虚拟机3VBoxManage startvm 虚拟机名 --type gui # 启动虚拟机4VBoxManage startvm 虚拟机名 --type headless# 无前端图形界面方式启动虚拟机…

2024第16届中国西部教育博览会在成渝双城举办

2024第16届中国西部教育博览会在成渝双城举办 邀请函 主办单位&#xff1a;中国西部教体融合博览会组委会 承办单位&#xff1a;重庆港华展览有限公司 时间&#xff1a;2024年3月30--31日 地点&#xff1a;成都世纪城新国际会展中心 时间&#xff1a;2024年6月22--23日 地…

【Linux取经路】进程控制——进程等待

文章目录 一、进程创建1.1 初识 fork 函数1.2 fork 函数返回值1.3 写时拷贝1.4 fork 的常规用法1.5 fork 调用失败的原因1.6 创建一批进程 二、进程终止2.1 进程退出场景2.2 strerror函数2.3 errno全局变量2.4 程序异常2.5 进程常见退出方法2.6 exit 函数2.7 _exit 函数和 exit…

week03day03(文件操作、正则表达式1)

一、文件操作 1.数据持久化&#xff08;数据本地化&#xff09; -- 将数据保存在硬盘 程序中的数据默认是保存在运行内存中的&#xff0c;保存在运行内存中的数据在程序运行结束后会自动释放。如果希望在程序结束后&#xff0c;数据仍可以使用&…