Android实现计步进度的环形Progress

发布时间 - 2026-01-10 23:07:27    点击率:

项目中需要实现一个计步进度的环形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计步进度Progress  # Android环形进度Progress  # Android计步环形进度  # Android实现环形进度条  # Android自定义环形LoadingView效果  # Android自定义View实现环形进度条的思路与实例  # Android实现环形进度条的实例  # Android实现环形进度条代码  # Android应用中炫酷的横向和环形进度条的实例分享  # Android中制作进度框和环形进度条的简单实例分享  # Android环形进度条(安卓默认形式)实例代码  # android自定义环形对比图效果  # 大家多多  # progress  # setProgress  # invalidate  # mProgress  # progess  # stepGoal  # gt  # mPaint  # rgb  # drawColor  # canvas  # true  # setAntiAlias  # Color  # setColor  # text  # style  # center  # align 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 怎样使用JSON进行数据交换_它有什么限制  Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】  如何在云虚拟主机上快速搭建个人网站?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何用AWS免费套餐快速搭建高效网站?  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  详解jQuery中的事件  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  高端建站三要素:定制模板、企业官网与响应式设计优化  简单实现jsp分页  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  C#如何调用原生C++ COM对象详解  如何自定义建站之星网站的导航菜单样式?  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  高防服务器租用指南:配置选择与快速部署攻略  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  如何用JavaScript实现文本编辑器_光标和选区怎么处理  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何用y主机助手快速搭建网站?  ,在苏州找工作,上哪个网站比较好?  Laravel如何处理表单验证?(Requests代码示例)  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  香港服务器部署网站为何提示未备案?  bing浏览器学术搜索入口_bing学术文献检索地址  详解Android中Activity的四大启动模式实验简述  Python高阶函数应用_函数作为参数说明【指导】  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  googleplay官方入口在哪里_Google Play官方商店快速入口指南  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  深圳网站制作平台,深圳市做网站好的公司有哪些?  php打包exe后无法访问网络共享_共享权限设置方法【教程】  北京专业网站制作设计师招聘,北京白云观官方网站?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  如何快速生成可下载的建站源码工具?  如何实现建站之星域名转发设置?  如何快速生成橙子建站落地页链接?  Laravel如何使用模型观察者?(Observer代码示例)  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  怎么用AI帮你设计一套个性化的手机App图标?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  如何用VPS主机快速搭建个人网站?  如何用西部建站助手快速创建专业网站?  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】