当前位置: 首页 > article >正文

【HarmonyOS 6】个人中心数据可视化实战

一、案例背景在健康管理类应用中用户希望在“个人中心”快速查看周期性的健康汇总。相比单一数据健康报告弹窗能在一个页面中集中展示平均分、每日评分、分项进度与健康建议阅读效率更高。本案例面向 HarmonyOS 6 初学者聚焦一个移动端功能点个人中心菜单入口 健康报告弹窗 分项进度展示。你将学到如何在“更多功能”中设置报告入口如何控制弹窗显示/隐藏如何用环形进度展示综合评分如何用线性进度展示分项平均分二、完整代码实现本功能主要由两部分组成个人中心的“健康报告”入口健康报告弹窗的内容结构与进度展示2.1 菜单入口点击打开报告弹窗Column(){CommonCard({title:更多功能}){Column(){this.MenuRow( 健康报告,(){this.showReportDialogtrue;this.loadReportData(this.reportPeriod);})Divider().margin({top:this.getDividerMargin(),bottom:this.getDividerMargin()}asPadding)this.MenuRow( 养生知识,(){this.selectedArticleIndex-1;this.showKnowledgeDialogtrue;})Divider().margin({top:this.getDividerMargin(),bottom:this.getDividerMargin()}asPadding)this.MenuRow(⚙️ 设置,(){this.tempWaterTargetthis.dailyWaterTarget;this.tempExerciseTargetthis.weeklyExerciseTarget;this.tempSleepHoursthis.sleepTargetHours;this.loadReminderSettings();this.showSettingsDialogtrue;})Divider().margin({top:this.getDividerMargin(),bottom:this.getDividerMargin()}asPadding)this.MenuRow(ℹ️ 关于,(){this.showAboutDialogtrue;})}}}.margin({left:this.getCardMargin(),right:this.getCardMargin(),bottom:this.getCardMargin()}asPadding)入口逻辑很清晰点击“ 健康报告”打开弹窗showReportDialog true同步加载本周/本月数据2.2 健康报告弹窗结构弹窗包含三个核心区域综合评分、每日评分、各项平均分。// 健康报告弹窗if(this.showReportDialog){Column(){Column(){// 头部Row(){Text(健康报告).fontSize(this.getDialogTitleSize()).fontWeight(FontWeight.Bold).fontColor($r(app.color.text_primary))Blank()// 周/月切换Row(){Text(周).fontSize(this.getSmallTextSize()).fontColor(this.reportPeriodweek?Color.White:$r(app.color.text_primary)).padding({left:this.getDividerMargin(),right:this.getDividerMargin(),top:this.getChipPaddingVertical(),bottom:this.getChipPaddingVertical()}asPadding).backgroundColor(this.reportPeriodweek?$r(app.color.primary_color):$r(app.color.input_background)).borderRadius(this.getDividerMargin()).onClick((){if(this.reportPeriod!week){this.reportPeriodweek;this.loadReportData(week);}})Text(月).fontSize(this.getSmallTextSize()).fontColor(this.reportPeriodmonth?Color.White:$r(app.color.text_primary)).padding({left:this.getDividerMargin(),right:this.getDividerMargin(),top:this.getChipPaddingVertical(),bottom:this.getChipPaddingVertical()}asPadding).backgroundColor(this.reportPeriodmonth?$r(app.color.primary_color):$r(app.color.input_background)).borderRadius(this.getDividerMargin()).margin({left:this.getItemGap()}asPadding).onClick((){if(this.reportPeriod!month){this.reportPeriodmonth;this.loadReportData(month);}})}Text(×).fontSize(this.getCloseLargeSize()).fontColor($r(app.color.text_secondary)).margin({left:this.getSectionGap()}asPadding).onClick((){this.showReportDialogfalse;})}.width(100%)头部结构包含左侧标题中部周/月切换右侧关闭按钮2.3 综合评分环形进度// 综合评分区Column(){Stack(){Progress({value:100,total:100,type:ProgressType.Ring}).width(this.getReportRingSize()).height(this.getReportRingSize()).color($r(app.color.divider_color)).style({strokeWidth:this.getReportRingStrokeWidth()})Progress({value:this.avgTotalScore,total:100,type:ProgressType.Ring}).width(this.getReportRingSize()).height(this.getReportRingSize()).color(this.getScoreColor(this.avgTotalScore)).style({strokeWidth:this.getReportRingStrokeWidth()})Column(){Text(this.avgTotalScore.toString()).fontSize(this.getReportScoreSize()).fontWeight(FontWeight.Bold).fontColor(this.getScoreColor(this.avgTotalScore))Text(平均分).fontSize(this.getReportLabelSize()).fontColor($r(app.color.text_secondary))}}Text(${this.getCurrentReportOffset()0?(this.reportPeriodweek?本周:本月):this.getReportRangeLabel()}健康评分).fontSize(this.getSmallTextSize()).fontColor($r(app.color.text_secondary)).margin({top:this.getItemGap()}asPadding)}.width(100%).padding({top:this.getSectionGap(),bottom:this.getSectionGap()}asPadding)这里使用两个环形进度叠加底层灰色圆环是背景顶层彩色圆环表示平均分2.4 各项平均分线性进度// 模块统计Column(){Text(各项平均).fontSize(this.getSectionTitleSize()).fontWeight(FontWeight.Medium).fontColor($r(app.color.text_primary)).width(100%)// 打卡Row(){Text(✅ 打卡).fontSize(this.getBodyTextSize()).fontColor($r(app.color.text_primary))Blank()Text(${this.avgCheckInScore}分).fontSize(this.getBodyTextSize()).fontWeight(FontWeight.Medium).fontColor(this.getScoreColor(this.avgCheckInScore))}.width(100%).margin({top:this.getDividerMargin()}asPadding)Progress({value:this.avgCheckInScore,total:100,type:ProgressType.Linear}).height(this.getProgressHeight()).color($r(app.color.primary_color)).backgroundColor($r(app.color.divider_color)).borderRadius(this.getProgressHeight()/2).margin({top:this.getSmallGap()}asPadding)// 饮水Row(){Text( 饮水).fontSize(this.getBodyTextSize()).fontColor($r(app.color.text_primary))Blank()Text(${this.avgWaterScore}分).fontSize(this.getBodyTextSize()).fontWeight(FontWeight.Medium).fontColor(this.getScoreColor(this.avgWaterScore))}.width(100%).margin({top:this.getDividerMargin()}asPadding)Progress({value:this.avgWaterScore,total:100,type:ProgressType.Linear}).height(this.getProgressHeight()).color($r(app.color.water_blue)).backgroundColor($r(app.color.divider_color)).borderRadius(this.getProgressHeight()/2).margin({top:this.getSmallGap()}asPadding)// 运动Row(){Text( 运动).fontSize(this.getBodyTextSize()).fontColor($r(app.color.text_primary))Blank()Text(${this.avgExerciseScore}分).fontSize(this.getBodyTextSize()).fontWeight(FontWeight.Medium).fontColor(this.getScoreColor(this.avgExerciseScore))}.width(100%).margin({top:this.getDividerMargin()}asPadding)Progress({value:this.avgExerciseScore,total:100,type:ProgressType.Linear}).height(this.getProgressHeight()).color($r(app.color.exercise_orange)).backgroundColor($r(app.color.divider_color)).borderRadius(this.getProgressHeight()/2).margin({top:this.getSmallGap()}asPadding)// 睡眠Row(){Text( 睡眠).fontSize(this.getBodyTextSize()).fontColor($r(app.color.text_primary))Blank()Text(${this.avgSleepScore}分).fontSize(this.getBodyTextSize()).fontWeight(FontWeight.Medium).fontColor(this.getScoreColor(this.avgSleepScore))}.width(100%).margin({top:this.getDividerMargin()}asPadding)Progress({value:this.avgSleepScore,total:100,type:ProgressType.Linear}).height(this.getProgressHeight()).color($r(app.color.sleep_purple)).backgroundColor($r(app.color.divider_color)).borderRadius(this.getProgressHeight()/2).margin({top:this.getSmallGap()}asPadding)}四条进度条分别代表四个维度的平均分颜色区分非常直观打卡主色饮水蓝色运动橙色睡眠紫色三、总结本案例完整展示了一个移动端健康报告弹窗的实现方式核心要点包括菜单入口触发弹窗显示周/月切换控制数据周期环形进度展示综合评分线性进度展示分项平均分掌握这个案例后你可以继续扩展更多报告内容例如数据趋势折线图日历高亮评分等级标签

相关文章:

【HarmonyOS 6】个人中心数据可视化实战

一、案例背景 在健康管理类应用中,用户希望在“个人中心”快速查看周期性的健康汇总。相比单一数据,健康报告弹窗能在一个页面中集中展示平均分、每日评分、分项进度与健康建议,阅读效率更高。 本案例面向 HarmonyOS 6 初学者,聚焦…...

parser.add_argument(“experiment_dir“, type=str)和parser.add_argument(“--experiment_dir“, type=str)的区别

这两者存在重要区别: 主要区别 1. 位置参数 vs 可选参数parser.add_argument("experiment_dir", typestr) 这是位置参数,必须按照顺序提供,不能省略parser.add_argument("--experiment_dir", typestr) 这是可选参数&…...

**发散创新:基于Python的伦理黑客实战演练——从漏洞探测到防御加固全流程解

发散创新:基于Python的伦理黑客实战演练——从漏洞探测到防御加固全流程解析 在网络安全日益复杂的今天,伦理黑客(Ethical Hacking) 不再是单纯的“攻击技术”,而是成为保障系统安全的核心能力之一。本文将以 Python 语…...

**图神经网络实战:用PyTorch Geometric构建社交关系预测模型**在当前人工

图神经网络实战:用PyTorch Geometric构建社交关系预测模型 在当前人工智能快速演进的背景下,图神经网络(Graph Neural Networks, GNNs) 已成为处理复杂结构数据的重要工具。相比于传统深度学习模型对图像或序列数据的依赖&#xf…...

魔术橡皮 3.1.17 | 无限次AI生图,AI橡皮,图片AI编辑修改

Magic Eraser是一款功能强大且操作简便的照片编辑工具,其核心功能是帮助用户快速去除照片中不必要的物体,并借助智能算法保证修复效果自然流畅。无论是用于旅行照片处理、社交媒体分享,还是日常摄影,该应用都能为用户提供诸多便利…...

《C++实战项目-高并发内存池》7.大块内存的申请与释放

💡Yupureki:个人主页 ✨个人专栏:《C》 《算法》《Linux系统编程》《高并发内存池》 🌸Yupureki🌸的简介: 目录 1. 大块内存的申请 2. 大块内存的释放 完整项目链接https://github.com/Yupureki-code/ConcurrentMemoryPool 1. 大块内存的申…...

Qt Creator + MSVC 2022 64bit 配置 Dump 文件生成与分析流程

Qt Creator MSVC 2022 64bit 配置 Dump 文件生成与分析流程Qt Creator MSVC 2022 64bit 环境下配置生成dump文件可以通过修改注册表,当应用程序崩溃时自动生成dump文件特定应用程序设置生成dump假如应用程序为Vtk_Helloworld.exe,生成dump文件目录设置…...

微软在Windows 11中新增Xbox模式

微软在周三宣布了一项"创新"功能,将在Windows 11系统中增加Xbox模式。这一消息出现在微软副总裁Jason Ronald发布的关于未来游戏计划的帖子中。他表示:"随着游戏日益跨设备发展,我们正在打破主机和PC游戏之间的壁垒&#xff0…...

IBM助力实现费曼量子模拟愿景

IBM发布了将量子计算整合到高性能计算数据中心和工作流程的详细参考架构。该架构展示了如何在不进行颠覆性改变的情况下,将量子处理单元嵌入到现有高性能计算基础设施中。量子为中心的超算正在实现为科学家提供价值的化学模拟。通过这项工作,IBM正在推进…...

东华OJ-进阶题-10-分解质因数(C++)

问题描述 求出区间[a,b]中所有整数的质因数分解。输入说明 输入两个整数a&#xff0c;b。 2<a<b<10000 输出说明 每行输出一个数的分解&#xff0c;形如ka1a2a3…(a1<a2<a3…&#xff0c;k也是从小到大的)(具体可看范例)输入范例 3 10输出范例 33 42*2 55 62*3 …...

实战|AI应用架构师用GNN构建智能客服的意图识别

实战|用GNN构建智能客服意图识别:从原理到落地的完整指南 副标题:结合知识图谱与图神经网络的精准意图理解方案 摘要/引言 问题陈述 智能客服的核心是意图识别——准确理解用户查询背后的需求(比如“我想改快递地址” vs “我的快递丢了”)。但传统方法存在明显局限:…...

图像拼接对齐

切割生成测试图片 import cv2 import numpy as np# 读取原图 img = cv2.imread(r"D:\data\video\jimeng_ok\143.jpg") # H x W x C# 获取高度和宽度 H, W = img.shape[:2]# 切割上下两部分 mid = H // 2 top_img = img[:mid, :, :].copy() # 上半部分 bottom_img…...

最强生图模型NanoBanana 2,一手深度测- 附教程

谷歌发布的最新NanoBanana2绘图模型&#xff0c;已经在全球范围刷屏。 NanoBanana2在世界知识、图像质量、推理能力和主体一致性等方面实现了全面升级&#xff0c;堪称当前地表最强生图模型。 生成速度和价格还只有上一代的一半&#xff0c;可以说性价比满满&#xff01; 但国…...

Agentic LLM工作流在钻井日报分析中的应用

虽然钻井在数字化和人工智能方面取得了快速进展&#xff0c;实现了更高的运营效率、风险缓解和数据驱动决策&#xff0c;但在记录钻井风险方面仍存在显著差距——特别是那些记录在每日钻井报告&#xff08;DDRs&#xff09;中、隐含在生产时间内和非结构化文档中的事件&#xf…...

如何优化大数据领域的数据建模流程

如何优化大数据领域的数据建模流程关键词&#xff1a;大数据、数据建模流程、优化策略、数据仓库、模型评估摘要&#xff1a;本文围绕大数据领域的数据建模流程优化展开&#xff0c;旨在探讨如何提升数据建模的效率与质量。首先介绍了大数据环境下数据建模的背景&#xff0c;包…...

AI Coding 从“抽盲盒”到“开火箭”:SDD+TDD 开发模式实战揭秘

AI Coding 从“抽盲盒”到“开火箭”&#xff1a;SDDTDD 开发模式实战揭秘 开篇&#xff1a;AI 时代的开发革命 2025 年&#xff0c;一位以色列工程师单枪匹马&#xff0c;用 AI 工具开发了一个代码生成平台&#xff0c;短短数周收获 10 万用户&#xff0c;半年后带着 8 人团…...

Kali Linux渗透测试与网络攻防实验靶场

DVWA网站漏洞靶场https://pan.quark.cn/s/8cba19076fa5https://pan.baidu.com/s/17CS5txxr-KpxtzwzIWRKmg?pwdhhd6bWAPP网站漏洞靶场https://pan.quark.cn/s/8a131e5840cchttps://pan.baidu.com/s/1DNeCWk-F-XjDKlWii5Ajqw?pwd4sma安卓渗透测试靶场https://pan.quark.cn/s/fd…...

AI 不会先杀死 SaaS,但会先杀死 SaaS 的旧玩法

今天和大家聊一下 AI 对 SaaS 生意的冲击。导火索是 2026 年2月初的一次市场震动&#xff1a;Anthropic 发布了新一代法律与知识工作自动化工具后&#xff0c;投资人突然开始担心&#xff1a;大模型不再只是底层能力&#xff0c;而是在直接往软件公司的应用层上走了。紧接着&am…...

TODO:Swagger基本使用

一、依赖及配置<!--swagger--> <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>4.1.0</version> </dependency>knife4j:enable: trueopen…...

深入理解 HashMap 扩容流程:从 1.7 到 1.8 的演进与细节解析

在 Java 集合框架中&#xff0c;HashMap 无疑是日常开发中最常用的键值对存储结构&#xff0c;无论是业务系统中的数据缓存、参数传递&#xff0c;还是框架底层的核心存储&#xff0c;都能看到它的身影。而支撑 HashMap 高效运行的核心&#xff0c;除了哈希算法&#xff0c;便是…...

3月15日(进阶6)

进阶6.龟兔赛跑预测 题目描述 话说这个世界上有各种各样的兔子和乌龟&#xff0c;但是研究发现&#xff0c;所有的兔子和乌龟都有一个共同的特点——喜欢赛跑。于是世界上各个角落都不断在发生着乌龟和兔子的比赛&#xff0c;小华对此很感兴趣&#xff0c;于是决定研究不同兔子…...

VSCode + Copilot:打造你的超级开发环境

引言在软件开发的世界里&#xff0c;开发环境就是程序员的“兵器库”。一套高效、智能的开发环境&#xff0c;能让你从繁琐的重复劳动中解放出来&#xff0c;专注于创造真正的价值。过去&#xff0c;我们追求的是编辑器的轻量、插件的丰富、调试的便捷。而今天&#xff0c;随着…...

让 AI 成为你的鸿蒙开发助手:harmonyos-build-deploy Skill 完全实战指南

&#x1f680; 让 AI 成为你的鸿蒙开发助手&#xff1a;harmonyos-build-deploy Skill 完全实战指南 不是一篇教你敲命令的文章&#xff0c;而是一场关于 AI Coding 范式的革命。 在 HarmonyOS 开发中&#xff0c;我们不再需要记忆繁琐的 CLI 参数&#xff0c;不再需要手动处理…...

结构变异检测技术:从read-pair、split-read到组装方法的综合策略

点击 “AladdinEdu&#xff0c;你的AI学习实践工作坊”&#xff0c;注册即送-H卡级别算力&#xff0c;沉浸式云原生集成开发环境&#xff0c;80G大显存多卡并行&#xff0c;按量弹性计费&#xff0c;教育用户更享超低价。 摘要&#xff1a;结构变异&#xff08;SV&#xff09;是…...

中国电建集团华东院设计岗离职率高吗?

根据当前可查的公开资料&#xff0c;‌中国电建集团华东勘测设计研究院&#xff08;简称“华东院”&#xff09;设计岗的离职率整体偏高‌&#xff0c;尤其在年轻员工和新入职人员中较为明显。主要依据如下&#xff1a;‌高强度工作与高离职率关联明确‌&#xff1a;多份资料指…...

Bootstrap5 图像形状

Bootstrap5 图像形状 Bootstrap5 是全球最受欢迎的前端框架之一,它提供了一个快速、简洁且灵活的方式来创建响应式网站和应用程序。在Bootstrap5中,我们可以通过丰富的组件和工具来设计出各种样式的页面元素,其中图像形状是一个极具创意和实用性的功能。本文将详细介绍Boot…...

【Iced】stream.rs文件

use std::future::Future; use std::pin::Pin; use std::task::{Context, Poll};use futures::stream::Stream;use crate::subscription::EventStream;/// 将Stream转换为EventStream pub fn from_stream<Message, S>(stream: S) -> EventStream<Message> where…...

提示工程中的“虚假宣传”问题:架构师的道德与法务责任

提示工程中的“虚假宣传”问题:架构师的道德与法务责任 一、引言:当AI成为“说谎的帮凶” 你有没有刷到过这样的朋友圈广告? “亲测XX脱发液,30天长出新发!我用了2周,头顶的稀疏区全满了——附前后对比图。” 点进评论区,却看到有人留言:“我用了3个月,一根头发没长…...

彼得林奇如何分析公司的用户增长质量

彼得林奇如何分析公司的用户增长质量关键词&#xff1a;彼得林奇、公司分析、用户增长质量、财务分析、市场调研摘要&#xff1a;本文深入探讨了投资大师彼得林奇分析公司用户增长质量的方法。从背景介绍入手&#xff0c;阐述分析的目的、预期读者、文档结构及相关术语。接着讲…...

大厂面试真题汇总(2026版)

今年的金三银四也快到了&#xff0c;很多粉丝反应说让我总结一份高质量面试题&#xff0c;金三银四之前想要准备准备&#xff0c;于是就有了今天这篇文章~在过去的一年里&#xff0c;LZ看到很多小伙伴在面试的时候都拿到了自己心仪的Offer&#xff0c;同时也在各大论坛博客平台…...