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

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

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

20241105_220648.gif


关键词
  • 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) // 设置页面内边距
  }
}

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

20241105_220648.gif


四、代码解读

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

五、优化建议

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

六、相关知识点


小结

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


下一篇预告

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


上一篇: 「Mac畅玩鸿蒙与硬件29」UI互动应用篇6 - 多选问卷小应用

下一篇: 「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件


作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=287
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


目录
相关文章
|
15天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
19天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
10天前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
|
23天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
9天前
|
人工智能 自然语言处理 前端开发
什么?!通义千问也可以在线开发应用了?!
阿里巴巴推出的通义千问,是一个超大规模语言模型,旨在高效处理信息和生成创意内容。它不仅能在创意文案、办公助理、学习助手等领域提供丰富交互体验,还支持定制化解决方案。近日,通义千问推出代码模式,基于Qwen2.5-Coder模型,用户即使不懂编程也能用自然语言生成应用,如个人简历、2048小游戏等。该模式通过预置模板和灵活的自定义选项,极大简化了应用开发过程,助力用户快速实现创意。
|
5天前
|
云安全 存储 弹性计算
|
7天前
|
云安全 人工智能 自然语言处理
|
5天前
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
379 4
|
5天前
|
缓存 Linux Docker
【最新版正确姿势】Docker安装教程(简单几步即可完成)
之前的老版本Docker安装教程已经发生了变化,本文分享了Docker最新版安装教程,其他操作系统版本也可以参考官 方的其他安装版本文档。
【最新版正确姿势】Docker安装教程(简单几步即可完成)
|
11天前
|
人工智能 自然语言处理 前端开发
用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。本教程完全免费,而且为大家准备了 100 个降噪蓝牙耳机,送给前 100 个完成的粉丝。获奖的方式非常简单,只要你跟着教程完成第一课的内容就能获得。
下一篇
无影云桌面