「Mac畅玩鸿蒙与硬件30」UI互动应用篇7 - 简易计步器

本篇将带你实现一个简易计步器应用,用户通过点击按钮增加步数并实时查看步数进度,目标步数为 10000 步。该项目示例展示了如何使用 Progress 组件和 Button 组件,并结合状态管理,实现交互式应用。

在这里插入图片描述


关键词
  • UI互动应用
  • 计步器
  • Button 组件
  • Progress 组件
  • 状态管理

一、功能说明

该简易计步器应用允许用户记录每日步数并显示步数进度条。通过点击“增加步数”按钮,步数会逐步增加,进度条显示步数目标的完成情况。用户还可以点击“重置”按钮将步数清零,重新开始计步。


二、所需组件
  • @Entry@Component 装饰器
  • Column 布局组件
  • Text 组件用于显示步数
  • Button 组件用于用户交互
  • Progress 组件用于显示进度
  • @State 修饰符用于状态管理
项目结构
  • 项目名称StepCounterApp
  • 自定义组件名称StepCounterPage
  • 代码文件StepCounterPage.etsIndex.ets

三、代码实现
// 文件名:StepCounterPage.ets// 定义计步器页面组件
@Component
export struct StepCounterPage {@State stepCount: number = 0; // 初始步数maxSteps: number = 10000; // 设定步数目标// 构建页面布局和组件build() {Column({ space: 20 }) { // 创建垂直布局容器,子组件间距为 20// 应用标题Text('简易计步器').fontSize(24).fontWeight(FontWeight.Bold).alignSelf(ItemAlign.Center);// 显示当前步数Text(`当前步数: ${this.stepCount}`).fontSize(20).alignSelf(ItemAlign.Center);// 显示目标步数Text(`目标步数: ${this.maxSteps}`).fontSize(18).fontColor(Color.Gray).alignSelf(ItemAlign.Center);// 线性进度条,显示当前步数的进度Progress({value: this.getProgress(), // 进度百分比total: 100, // 进度条总长度设定为 100%type: ProgressType.Linear, // 线性进度条}).color(Color.Green) // 设置进度颜色.backgroundColor(Color.Gray) // 设置背景色.height(8) // 设置进度条高度.width('80%').alignSelf(ItemAlign.Center);// “增加步数”按钮,模拟计步功能Button('增加步数').onClick(() => {this.increaseStepCount(); // 点击增加步数}).fontSize(20).backgroundColor(Color.Blue).fontColor(Color.White).margin({ top: 20 });// “重置”按钮,清零步数Button('重置').onClick(() => {this.resetStepCount(); // 点击重置步数}).fontSize(20).backgroundColor(Color.Red).fontColor(Color.White).margin({ top: 10 });}.padding(20).width('100%').height('100%').alignItems(HorizontalAlign.Center);}// 获取进度百分比private getProgress(): number {return Math.min((this.stepCount / this.maxSteps) * 100, 100); // 限制进度不超过 100%}// 增加步数的逻辑private increaseStepCount() {if (this.stepCount < this.maxSteps) { // 防止步数超过目标this.stepCount += 500; // 模拟步数增加,每次增加 500 步}}// 重置步数的逻辑private resetStepCount() {this.stepCount = 0; // 重置步数为 0}
}
// 文件名:Index.ets// 导入计步器页面组件
import { StepCounterPage } from './StepCounterPage'// 定义应用入口组件
@Entry
@Component
struct Index {build() {Column() {StepCounterPage() // 引用计步器页面组件}.padding(20) // 设置页面内边距}
}

效果示例:用户点击“增加步数”按钮后,步数会实时更新并显示进度条的变化,用户也可以点击“重置”按钮将步数清零。

在这里插入图片描述


四、代码解读
  • @State stepCount
    使用状态变量保存当前步数,通过 @State 修饰符管理变化。
  • Progress 组件
    线性进度条组件用于显示当前步数在目标步数中的完成比例,设置 total 为 100 以代表百分比。
  • increaseStepCount() 方法
    通过点击按钮增加步数,每次增加一定数量,模拟步数的增长。
  • resetStepCount() 方法
    stepCount 重置为 0,清除进度。

五、优化建议
  1. 动态目标设置:允许用户设置自己的步数目标,让应用更具个性化。
  2. 动画效果:在进度条更新时增加动画,使用户体验更流畅。
  3. 自动保存步数:在应用重启后保持步数不变,提供连续性记录功能。
  4. 成就系统:实现步数达标后的成就提示,增加用户的成就感。

六、相关知识点
  • 「Mac畅玩鸿蒙与硬件15」鸿蒙UI组件篇5 - Slider 和 Progress 组件
  • 「Mac畅玩鸿蒙与硬件11」鸿蒙UI组件篇1 - Text 和 Button 组件详解

小结

本篇教程通过简易计步器应用,演示了如何使用 Progress 组件和 Button 组件,实时更新状态并显示进度。通过该项目,你学会了如何在应用中进行状态管理和数据的实时展示。


下一篇预告

下一篇「UI互动应用篇8 - 自定义评分星级组件」将介绍如何实现一个评分系统,帮助用户通过点击星星来进行评分。


上一篇:「Mac畅玩鸿蒙与硬件29」UI互动应用篇6 - 多选问卷小应用
下一篇:「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

直播系统搭建教程安装说明

需要安装的软件(宝塔【软件商店】中查找安装): 1.PHP7.0 ~ PHP7.3 需要安装的扩展:(宝塔【PHP管理】【安装扩展】中安装) *PDO PHP Extension * MBstring PHP Extension * CURL PHP Extension * Mylsqi PHP Extension * Redis PHP Extension * fileinfo PHP Extension …

@Async注解提升Spring Boot项目中API接口并发能力

文章目录 同步调用异步调用1: 启用异步支持2: 修改 Task 类异步回调基本概念使用 Future<String>使用 CompletableFuture<String>Future<String> 和 CompletableFuture<String>区别1. 基本概念2. 主要区别同步调用 同步调用是最直接的调用方式,调用方…

对齐自治 Aligned autonomy

对于有效的产品开发&#xff0c;我们想要的自主权不是 “随心所欲” &#xff0c;而是一种自主权&#xff0c;使团队能够自由行动&#xff0c;利用他们所有的能力朝着集体成果前进。这也称为“对齐自治”。 Aligned autonomy 2x2&#xff0c;来自 Spotify 的 Henrik Kniberg 工…

Spring Boot 与 Vue 共筑二手书籍交易卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

物理验证Calibre LVS Debug案例之通过deleteEmptyModule解决LVS问题

上周帮助T12nm A55训练营学员debug一个Calibre LVS问题&#xff0c;小编觉得挺好的一个问题。这个问题之前没有遇到过&#xff0c;今天分享给大家。 数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点 下图所示为Calibre LVS的报告。从报告中看到…

【系统面试篇】进程与线程类(2)(笔记)——进程调度、中断、异常、用户态、核心态

目录 一、相关面试题 1. 进程的调度算法有哪些&#xff1f; 调度原则 &#xff08;1&#xff09;先来先服务调度算法 &#xff08;2&#xff09;最短作业优先调度算法 &#xff08;3&#xff09;高响应比优先调度算法 &#xff08;4&#xff09;时间片轮转调度算法 &am…

这下热闹了:电商巨头粗暴杀入物流自动化领域

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 在全球物流行业竞争日趋白热化的今天&#xff0c;一向以互联网和电商见长的阿里巴巴集团旗下菜鸟&#xff0c;突然以一记重拳杀入物流自动化设备领域。 其自主研发的直线窄带分拣机不…

新安装的Ubuntu 24.04.1安装Python模块报错?(error: externally-managed-environment)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 错误现象及原因📝 解决方案1. **创建虚拟环境**创建虚拟环境的步骤:2. **使用 pipx 管理应用**安装 `pipx`:3. **直接覆盖安装(不推荐)**4. **使用 `apt` 安装系统级包**📝 总结⚓️ 相关链接 ⚓️�…

前后端分离,Jackson,Long精度丢失

案例:后端接口放回一个Long数据 GetMapping("/testForLong")public Map<String, Object> testForLong() {Map<String, Object> map new HashMap<>();map.put("aaa", 1234567890123456789L);return map;}实际前端接收的数据 前后端数据…

【主机游戏】森林之子游戏介绍

《森林之子》是一款开放世界恐怖生存模拟游戏&#xff0c;玩家被派到孤岛上寻找失踪的亿万富翁&#xff0c;却陷入被食人生物占领的炼狱之地。他一经上线不仅饱受好评&#xff0c;还被玩家开发出来众多奇奇怪怪的玩法 https://pan.quark.cn/s/f903c978b071 当然他里边包含不限…

解线性方程组(一)

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的&#xff1a;进一步熟练掌握高斯顺序消去法解线性方程组的算法并编写程序&#xff0c;进一步熟练掌握高斯列主元消去法解线性方程组的算法并编写程序&#xff0c;提高编程能力和解算线性方程组问题的实践…

Ubuntu使用Qt虚拟键盘,支持中英文切换

前言 ​最近领导给了个需求&#xff0c;希望将web嵌入到客户端里面&#xff0c;做一个客户端外壳&#xff0c;可以控制程序的启动、停止、重启&#xff0c;并且可以调出键盘在触摸屏上使用(我们的程序虽然是BS架构&#xff0c;但程序还是运行在本地工控机上的)&#xff0c;我研…

数学建模(基于Python实现)--灰色关联分析法讲解,含案例

前言 这是去年底学数学建模老哥的建模课程笔记&#xff1b; 未来本人将陆陆续续的更新数学建模相关的一些基础算法&#xff0c;大家可以持续关注一下&#xff0c;主要在于运用&#xff1b; 提示&#xff1a;数学建模只有实战才能提升&#x1f525;​&#x1f525;​&#x1f…

jmeter结合ansible分布式压测--1数据准备

一、搭建ansible环境 ansible是基于python开发&#xff0c;通过ssh连接客户机执行任务。ansible可以批量系统配置、批量程序部署、批量运行命令等。 1、安装yum install ansible 2、检查ansible的版本:ansible --version 二、利用ansible在其他机器上准备压测数据 1、本地准…

网络:ARP的具体过程和ARP欺骗

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言ARP具体过程ARP欺骗原理总结 前言 本文仅作为ARP具体过程和ARP欺骗的知识总结 硬件类型 &#xff1a;指定发送和接受ARP包的硬件类型&am…

AI大模型的广泛应用时代该如何重塑软件开发流程?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于AI大模型如何重塑软件开发流程的相关内容…

影响神经网络速度的因素- FLOPs、MAC、并行度以及计算平台

影响神经网络速度的四个主要因素分别是 FLOPs&#xff08;浮点操作数&#xff09;、MAC&#xff08;内存访问成本&#xff09;、并行度以及计算平台。这些因素共同作用&#xff0c;直接影响到神经网络的计算速度和资源需求。 1. FLOPs&#xff08;Floating Point Operations&a…

springboot基于SpringBoot的旅游网站的设计与实现

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff0c;旅游网站当然也不能排除在外&#xff0c;随着旅游网站的不断成熟&#xff0c;它彻底改变了过去传统的旅游网站方式&#xff0c;不仅使旅游管理…

2.2 python数据库-mysql

以mysql为例&#xff0c;数据库的操作包括&#xff1a;连接、断开、新增库表、新增数据、查询数据、删除数据和修改数据 1. 连接与关闭 #!/usr/bin/python3import pymysqldb pymysql.connect(hostlocalhost,usertestuser,passwordtest123,databaseTESTDB)# 使用 cursor() 方…

微信小程序的汽车维修预约管理系统

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 系统功能简述 前台用于实现用户在页面上的各种操作&#xff0c;同时在个人中心显示各种操作所产生的记录&#xff1a;后…