项目中需要实现一个计步进度的环形Progress,当未达到设定目标时,绘制特定弧度((已实现步数/目标步数)*360°)的圆弧。当已实现步数大于等于目标步数时绘制整个360°圆环。

效果图:

代码实现:

设置已完成步数和目标步数:

public void setStep(int stepDone, int stepGoal) {

this.stepDone = stepDone;

this.stepGoal = stepGoal;

int progess = (stepDone * 100) / stepGoal;

if (progess > 100) {

setProgress(100);

} else {

setProgress(progess);

}

}

设置进度:

public void setProgress(int progress) {

this.mProgress = progress;

this.invalidate();

}

设置画笔属性:

mPaint.setAntiAlias(true);

mPaint.setColor(Color.rgb(0xe9, 0xe9, 0xe9));

canvas.drawColor(Color.TRANSPARENT);

mPaint.setStrokeWidth(LINE_WIDTH_BG);

mPaint.setStyle(Paint.Style.STROKE);

绘制环形和背景:

canvas.drawArc(mRectF, -90, 360, false, mPaint);

mPaint.setColor(Color.rgb(0xf8, 0x60, 0x30));

canvas.drawArc(mRectF, -90, ((float) mProgress / mMaxProgress) * 360, false, mPaint);

绘制步数和单位:

mPaint.setStrokeWidth(TEXT_WIDTH);

String text = stepDone + context.getString(R.string.step_unit);

int textHeight = height / 4;

mPaint.setTextSize(textHeight);

int textWidth = (int) mPaint.measureText(text, 0, text.length());

mPaint.setStyle(Paint.Style.FILL);

canvas.drawText(text, width / 2 - textWidth / 2, height / 2 + textHeight / 4, mPaint);

绘制目标步数:

String textGoal = "/" + stepGoal;

int textGoalHeight = height / 8;

mPaint.setTextSize(textGoalHeight);

int textGoalWidth = (int) mPaint.measureText(textGoal, 0, textGoal.length());

mPaint.setStyle(Paint.Style.FILL);

canvas.drawText(textGoal, width / 2 - textGoalWidth / 2, height / 2 + textHeight / 2

+ textGoalHeight, mPaint);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android计步器进度条,Android实现计步进度的环形Progress相关推荐

  1. android 自定义 进度条 旋转,Android_Android ProgressBar进度条使用详解,ProgressBar进度条,分为旋转进 - phpStudy...

    Android ProgressBar进度条使用详解 ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,之前一直不明白进度条如何在实际项目中使用,网上演示进度条的案 ...

  2. Android缓冲进度条或加载进度条

    缓冲进度条或加载进度条,在加载页面或者视频加载过程中,为了做到更好的UI及App功能体验交互,这些缓冲加载的等待效果是必不可少的: 下面来看一下旋转的动画效果: 那么,他们的具体源码在这里:loadi ...

  3. android 反向进度条,Android progressBar 正向绘制与反向绘制

    image.png xml布局文件 android:id="@+id/progress02" android:layout_width="match_parent&quo ...

  4. android编程任务进度条,Android 进度条 ProgressBar - Android 入门教程

    今天要学的是一个特定场合要用到的控件--进度条控件.进度条的作用不言而喻,而在实际使用中,通常会有两种类型的进度条:横向进度条和圆形进度条.当然,ProgressBar 也是支持这两种类型的,可以应对 ...

  5. android 进度条图标方形_android 进度条的样式

    android 进度条的样式 例1:(默认样式(中等圆形)) android:id="@+id/progressBar1" android:layout_width="w ...

  6. android 4.2.2进度条,Android实现个性化的进度条

    1.案例效果图 2.准备素材 progress1.png(78*78) progress2.png(78*78) 3.原理 采用一张图片作为ProgressBar的背景图片(一般采用颜色比较浅的).另 ...

  7. android 动态改变进度条,Android条纹进度条的实现(调整view宽度仿进度条)

    Android条纹进度条的实现(调整view宽度仿进度条) 发布时间:2020-10-03 16:14:24 来源:脚本之家 阅读:89 作者:RustFisher 前言 本文主要给大家介绍了关于An ...

  8. android自定义圆角进度条,Android自定义进度条的圆角横向进度条实例详解

    1.本文将向你介绍自定义进度条的写法,比较简单,但还是有些知识点是需要注意的: invalidate()方法 RectF方法的应用 onMeasure方法的应用 2.原理 画3层圆角矩形,底层为黑色, ...

  9. android 签到 进度条,Android 七种进度条的样式

    当一个应用在后台执行时,前台界面就不会有什么信息,这时用户根本不知道程序是否在执行.执行进度如何.应用程序是否遇到错误终止等,这时需要使用进度条来提示用户后台程序执行的进度.Android系统提供了两 ...

  10. 带锚点进度条android,Axure:实现可拖动进度条

    原标题:Axure:实现可拖动进度条 怎样用Axure实现拖动进度条?一起来看下吧~ 可拖动进度条的应用场景,例如调节APP屏幕亮度,音乐播放器的音量等. 效果如下(●ˇ∀ˇ●) 准备4个元件,如下所 ...

最新文章

  1. 提升 DevOps 效率,试试 ChatOps 吧!
  2. php读取xml的值,PHP读取XML 值
  3. http:(2):http请求方法
  4. Duplicate entry ‘‘ for key ‘***‘
  5. vue 高德地图搜索功能_VUE中使用高德地图做轨迹添加功能,帮助轨迹展示
  6. ASP.net中实现双表格同步缩放不变形
  7. junit不启用事务_JUnit禁用启用测试
  8. linux date -d 的一些使用方法
  9. 全角字符unicode码对应表
  10. QR码与DM码的区别
  11. 十天学会单片机Day4串行口通信
  12. java基础语法(三)--运算符、控制语句
  13. elementui 多选框的使用
  14. 微信支付计算机,微信电脑版怎么支付?怎么开通微信支付?
  15. Pytorch 操作整理
  16. ktv点歌系统主界面java_欢迎进入MyKTV前后台点歌系统展示
  17. BIGEMAP添加在线地图地图数据源
  18. 蒜厂年会|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)
  19. Dharma勒索软件继续大肆传播,据称已有100多家希腊网站沦陷
  20. XP 操作系统安全防范

热门文章

  1. java代理模式-原来你是这样的代理
  2. r语言t检验输出检验统计量_[转载]R语言:常用统计检验
  3. 补发DAL层SQLHelper
  4. EXCEL常见问题五十问题解答
  5. 股票盯盘助手(才152KB),支持悬浮并置顶,支持拖到任务栏,支持更改刷新频率
  6. 聊聊中国智能照明市场以及前景
  7. mysql config win.h_mysql-python安装错误:无法打开包含文件'config-win.h'
  8. 计算机操作系统原理第二章习题
  9. 影视级调色lut预设包 Triune Color Cinematic LUTs V2
  10. php模拟登录教学视频,php使用curl模拟登录人人(校内)网_PHP教程