「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现

本篇将带你实现一个滑动选择器应用,用户可以通过滑动条选择不同的数值,并实时查看选定的值和提示。这是一个学习如何使用 Slider 组件、状态管理和动态文本更新的良好实践。

在这里插入图片描述


关键词
  • UI互动应用
  • Slider 组件
  • 状态管理
  • 动态数值更新
  • 用户交互

一、功能说明

在这个滑动选择器应用中,用户通过滑动条选择值,应用实时更新并显示当前选择的值。根据不同的数值范围,文本提示会变化,增加交互效果。


二、所需组件
  • @Entry@Component 装饰器
  • ColumnRow 布局组件
  • Text 组件用于显示文本
  • Slider 组件用于滑动选择
  • @State 修饰符用于状态管理
项目结构
  • 项目名称SliderSelectorApp
  • 自定义组件名称SliderSelectorPage
  • 代码文件SliderSelectorPage.etsIndex.ets

三、代码实现
// 文件名:SliderSelectorPage.ets

// 定义滑动选择器页面组件
@Component
export struct SliderSelectorPage {
  // 定义一个状态变量 selectedValue,用 @State 修饰符管理其状态变化
  @State selectedValue: number = 50; // 初始值设为 50

  // build() 方法构建页面布局和组件
  build() {
    Column({ space: 20 }) { // 创建垂直布局容器,子组件之间的间距为 20
      // 显示当前选择的数值
      Row() {
        Text(`当前选择的值: ${this.selectedValue}`) // 显示选定的值
          .fontSize(24) // 设置字体大小
          .fontWeight(FontWeight.Bold) // 设置字体为粗体
          .alignSelf(ItemAlign.Center) // 水平居中对齐
          .fontColor(Color.Black); // 设置文本颜色为黑色
      }

      // 滑动选择器组件
      Slider({ min: 0, max: 100, value: this.selectedValue }) // 创建滑动选择器,范围为 0-100
        .onChange((value: number) => { // 滑动时触发事件
          this.selectedValue = value; // 更新选定的值
        })
        .blockColor(Color.Blue) // 设置滑块颜色
        .trackColor(Color.Gray) // 设置滑动条背景颜色
        .width('80%') // 设置宽度为 80%
        .alignSelf(ItemAlign.Center); // 水平居中对齐

      // 动态显示提示文本,根据选定的值显示不同的提示和颜色
      Row() {
        Text(this.getFeedbackMessage()) // 获取反馈文本
          .fontSize(18) // 设置字体大小
          .alignSelf(ItemAlign.Center) // 水平居中对齐
          .fontColor(this.getFeedbackColor()); // 设置文本颜色
      }
    }
    .padding(20) // 设置内边距
    .width('100%') // 设置容器宽度为 100%
    .height('100%') // 设置容器高度为 100%
    .alignItems(HorizontalAlign.Center); // 垂直居中对齐
  }

  // 根据当前值返回不同的提示信息
  private getFeedbackMessage(): string {
    if (this.selectedValue > 75) {
      return '高值选择';
    } else if (this.selectedValue < 25) {
      return '低值选择';
    } else {
      return '中间值';
    }
  }

  // 根据当前值返回不同的文本颜色
  private getFeedbackColor(): Color {
    if (this.selectedValue > 75) {
      return Color.Red; // 返回红色
    } else if (this.selectedValue < 25) {
      return Color.Blue; // 返回蓝色
    } else {
      return Color.Green; // 返回绿色
    }
  }
}
// 文件名:Index.ets

// 导入滑动选择器页面组件
import { SliderSelectorPage } from './SliderSelectorPage'

// 定义应用入口组件
@Entry
@Component
struct Index {
  // build() 方法构建页面布局和组件
  build() {
    Column() {
      SliderSelectorPage() // 引用自定义的滑动选择器组件
    }
    .padding(20) // 设置页面内边距
  }
}

效果示例:用户拖动滑动条时,选定的值会实时更新并显示。根据值的范围,文本提示内容和颜色会动态变化。

在这里插入图片描述


四、代码解读
  • @State selectedValue
    定义一个状态变量,用于保存当前滑动条的值。状态变化时,UI 会自动刷新。
  • Slider 组件
    实现滑动选择功能,并通过 onChange 事件更新 selectedValue
  • getFeedbackMessage()getFeedbackColor() 方法
    根据 selectedValue 返回不同的提示文本和颜色,实现动态反馈。

五、优化建议
  1. 自定义滑动条样式:通过 blockColortrackColor 自定义滑动条的外观,提升视觉效果。
  2. 添加最小和最大值标签:在滑动条的两端添加文本标签,如“0”和“100”。
  3. 滑动动画:为滑动条添加动画过渡,使用户体验更流畅。
  4. 多语言支持:根据用户的语言环境显示不同语言的提示文本。

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

小结

本篇教程通过滑动选择器应用的实现,你学会了如何使用 Slider 组件来实现动态数值选择和显示。这为开发更复杂的交互式应用打下了基础。


下一篇预告

下一篇「UI互动应用篇6 - 多选问卷小应用」将展示如何实现用户多选问卷功能,并显示提交后的结果。


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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云服务器防火墙设置方法

云服务器防火墙设置方法通常包括&#xff1a;第一步&#xff1a;登录控制台&#xff0c;第二步&#xff1a;配置安全组规则&#xff0c;第三步&#xff1a;添加和编辑规则&#xff0c;第四步&#xff1a;启用或停用规则&#xff0c;第五步&#xff1a;保存并应用配置。云服务器…

数据中台一键大解析!

自从互联玩企业掀起了数据中台风&#xff0c;数据中台这个点马上就火起来了&#xff0c;短短几年数据中台就得到了极高的热度&#xff0c;一大堆企业也在跟风做数据中台&#xff0c;都把数据中台作为企业数字化转型的救命稻草&#xff0c;可是如果我告诉你数据中台并不是万能钥…

【第一个qt项目的实现和介绍以及程序分析】【正点原子】嵌入式Qt5 C++开发视频

qt项目的实现和介绍 1.第一个qt项目  &#xff08;1).创建qt工程    [1].创建一个存放qt的目录    [2].新建一个qt工程    [3].编译第一个工程    发生错误时的解决方式 二.QT文件介绍  (1).工程中文件简单介绍  (2).项目文件代码流程介绍    [1].添…

计算机网络:网络层 —— 网络地址转换 NAT

文章目录 网络地址转换 NAT 概述最基本的 NAT 方法NAT 转换表的作用 网络地址与端口号转换 NAPTNAT 和 NAPT 的缺陷 网络地址转换 NAT 概述 尽管因特网采用了无分类编址方法来减缓 IPv4 地址空间耗尽的速度&#xff0c;但由于因特网用户数量的急剧增长&#xff0c;特别是大量小…

【算法】【优选算法】双指针(下)

目录 一、611.有效三⻆形的个数1.1 左右指针解法1.2 暴力解法 二、LCR 179.查找总价格为目标值的两个商品2.1 左右指针解法2.2 暴力解法 三、15.三数之和3.1 左右指针解法3.2 暴力解法 四、18.四数之和4.1 左右指针解法4.2 暴力解法 一、611.有效三⻆形的个数 题目链接&#x…

面试题分享11月1日

1、过滤器和拦截器的区别 过滤器是基于spring的 拦截器是基于Java Web的 2、session 和 cookie 的区别、关系 cookie session 存储位置 保存在浏览器 &#xff08;客户端&#xff09; 保存在服务器 存储数据大小 限制大小&#xff0c;存储数据约为4KB 不限制大小&…

VR 创业之路:从《I Expect You To Die》到未来展望

今年是 Reality Labs 成立 10 周年&#xff0c;Meta 每周都会与不同的 XR 先驱进行交流&#xff0c;探讨他们在行业中的经历、经验教训以及对未来的展望。本次&#xff0c;他们与游戏设计师、作家兼 Schell Games CEO Jesse Schell 进行了深入交谈&#xff0c;了解了他的个人故…

【大数据学习 | kafka】简述kafka的消费者consumer

1. 消费者的结构 能够在kafka中拉取数据进行消费的组件或者程序都叫做消费者。 这里面要涉及到一个动作叫做拉取。 首先我们要知道kafka这个消息队列主要的功能就是起到缓冲的作用&#xff0c;比如flume采集数据然后交给spark或者flink进行计算分析&#xff0c;但是flume采用的…

​Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。

大家好&#xff01;今天我要向大家介绍一个超级有趣的话题——Controlnet作者的新作IC-light V2&#xff01;这个工具基于FLUX训练&#xff0c;能够支持处理风格化图像&#xff0c;并且细节表现远高于SD1.5。 想象一下&#xff0c;你有一个强大的AI助手&#xff0c;它能够根据…

危机来临前---- 力扣: 876

危机即将来临 – 链表的中间节点 描述&#xff1a; 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例&#xff1a; 何解&#xff1f; 1、遍历找到中间节点 &#xff1a; 这个之在回文链表中找…

【AI绘画】ComfyUI - AnimateDiff基础教程和使用心得

AnimateDiff是什么&#xff1f; AnimateDiff 是一个能够将个性化的文本转换为图像的扩展模型&#xff0c;它可以在无需特定调整的情况下实现动画效果。通过这个项目&#xff0c;用户可以将他们的想象力以高质量图像的形式展现出来&#xff0c;同时以合理的成本实现这一目标。随…

【docker】docker 环境配置及安装

本文介绍基于 官方存储库 docker 的环境配置、安装、代理配置、卸载等相关内容。 官方安装文档说明&#xff1a;https://docs.docker.com/engine/install/ubuntu/ 主机环境 宿主机环境 Ubuntu 20.04.6 LTS 安装步骤 添加相关依赖 sudo apt-get update sudo apt-get install…

一二三应用开发平台自定义查询设计与实现系列3——通用化重构

通用化重构 前面我们以一个实体为目标对象&#xff0c;完成了功能开发与调试。 在此基础上&#xff0c;我们对功能进行重构&#xff0c;使其成为平台的标准化、通用化的功能。 前端重构 首先&#xff0c;先把自定义组件挪到了平台公共组件目录下&#xff0c;如下&#xff1…

国标GB28181视频平台EasyCVR私有化视频平台工地防盗视频监控系统方案

一、方案背景 在当代建筑施工领域&#xff0c;安全监管和防盗监控是保障工程顺利进行和资产安全的关键措施。随着科技进步&#xff0c;传统的监控系统已不足以应对现代工地的安全挑战。因此&#xff0c;基于国标GB28181视频平台EasyCVR的工地防盗视频监控系统应运而生&#xf…

征程 6 工具链性能分析与优化 2|模型性能优化建议

01 引言 为了应对低、中、高阶智驾场景&#xff0c;以及当前 AI 模型在工业界的应用趋势&#xff0c;地平线推出了征程 6 系列芯片。 在软硬件架构方面&#xff0c;征程 6 不仅保持了对传统 CNN 网络的高效支持能力&#xff0c;还强化了对 Transformer 类型网络的支持&#xf…

【真题笔记】16年系统架构设计师要点总结

【真题笔记】16年系统架构设计师要点总结 存储部件接口嵌入式处理器产品配置配置管理用户文档系统文档CMM&#xff08;能力成熟度模型&#xff09;螺旋模型敏捷软件开发的方法学软件工具面向对象的分析模型设计模型COP&#xff08;面向构件的编程&#xff09;构件原子构件模块S…

GR2——在大规模视频数据集上预训练且机器人数据上微调,随后预测动作轨迹和视频(含GR1详解)

前言 上个月的24年10.9日&#xff0c;我在朋友圈看到字节发了个机器人大模型GR2&#xff0c;立马去看了下其论文(当然了&#xff0c;本质是个技术报告) 那天之后&#xff0c;我就一直想解读这个GR2来着 然&#xff0c;意外来了&#xff0c;如此文《OmniH2O——通用灵巧且可全…

Autocad2018

链接: https://pan.baidu.com/s/1MTd0gc5Q5zoKFnPNwk1VXw 提取码: x15v

把握数字化新趋势,迎接生态架构新时代——The Open Group 2024生态系统架构·可持续发展年度大会参会指南

距离大会还有&#xff1a;22天 在数字化转型的浪潮中&#xff0c;如何抓住机遇&#xff0c;实现可持续发展&#xff0c;已成为各行各业关注的焦点。The Open Group 2024生态系统架构可持续发展年度大会&#xff0c;将于2024年11月22日在北京国贸大酒店隆重举行。本次大会汇聚全…

OpenGL入门006——着色器在纹理混合中的应用

本节将理解顶点和片段着色器在纹理混合中的应用 文章目录 一些概念纹理时间依赖动画 实战简介dependenciesshader.fsshader.vsteenager.pngtex.png utilswindowFactory.hshader.hRectangleModel.hRectangleModel.cpp main.cppCMakeLists.txt最终效果 一些概念 纹理 概述&…