「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用
本篇将带你实现一个数字键盘应用,支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。
关键词
- UI互动应用
- 数字键盘
- 按钮组件
- 状态管理
- 用户交互
一、功能说明
数字键盘应用将实现以下功能:
- 用户可以点击数字键进行输入。
- 输入的数字将实时显示在屏幕上。
- 用户可以清除输入的内容或删除最后一个数字。
- 每个数字按钮将触发相应的事件,更新显示内容。
二、所需组件
@Entry和@Component装饰器Column和Row布局组件Button组件用于实现数字键Text组件用于显示输入的内容@State修饰符用于状态管理
三、项目结构
- 项目名称:
NumberKeyboardApp - 自定义组件名称:
NumberKeyboardPage、NumberButton - 代码文件:
NumberKeyboardPage.ets、Index.ets、NumberButton.ets
四、代码实现
// 文件名:NumberKeyboardPage.ets
import { NumberButton } from "./NumberButton";@Component
export struct NumberKeyboardPage {@State input: string = ''; // 显式指定类型为 string// 定义数字按钮内容private buttonRows: string[][] = [['1', '2', '3'],['4', '5', '6'],['7', '8', '9'],['0']];build() {Column({ space: 20 }) {// 显示当前输入Text(`输入: ${this.input}`).fontSize(24).fontWeight(FontWeight.Bold).alignSelf(ItemAlign.Center);// 使用 ForEach 遍历每一行按钮ForEach(this.buttonRows, (row: string[]) => {Row({ space: 10 }) {// 遍历当前行的按钮ForEach(row, (label: string) => {// 使用双向绑定NumberButton({ label: label }).onClick(() => this.input += label);});}});// 清除和删除按钮Row({ space: 10 }) {Button('清空').onClick(() => this.clearInput()).backgroundColor(Color.Red).fontColor(Color.White).width('45%').alignSelf(ItemAlign.Center);Button('删除').onClick(() => this.deleteLastCharacter()).backgroundColor(Color.Gray).fontColor(Color.White).width('45%').alignSelf(ItemAlign.Center);}}.padding(20).width('100%').height('100%').alignItems(HorizontalAlign.Center);}// 清空输入private clearInput() {this.input = '';}// 删除最后一个字符private deleteLastCharacter() {this.input = this.input.slice(0, -1);}
}
// 文件名:Index.ets
import { NumberKeyboardPage } from "./NumberKeyboardPage"; // 引入 NumberKeyboardPage@Entry
@Component
export struct Index {build() {Column({ space: 20 }) {// 渲染 NumberKeyboardPage 组件NumberKeyboardPage();}.padding(20).width('100%').height('100%').alignItems(HorizontalAlign.Center);}
}
// 文件名:NumberButton.ets
@Component
export struct NumberButton {@Prop label: string = ''; // 按钮标签build() {Button(this.label).backgroundColor(Color.Blue).fontColor(Color.White).width('30%').alignSelf(ItemAlign.Center).height(60);}
}
效果示例:用户可以点击数字按钮,输入内容实时更新。点击清空按钮清除所有输入,点击删除按钮删除最后一个字符。
五、代码解读
- 按钮组件:
NumberButton组件通过@Prop获取标签(数字)和父组件,点击按钮时更新父组件的输入内容。 - 状态管理:通过
@State管理当前输入的内容,每次点击按钮,输入的数字都会追加到input字符串中。 - 清空和删除:提供清空和删除按钮,分别通过
clearInput和deleteLastCharacter方法清除输入或删除最后一个字符。
六、优化建议
- 增加音效:为按钮点击增加音效,提升交互体验。
- 支持小数点:添加小数点按钮,支持浮动数字输入。
- 增加历史记录功能:记录用户输入的历史,支持快速恢复和查看之前的输入内容。
七、相关知识点
- 「Mac畅玩鸿蒙与硬件11」鸿蒙 UI 组件篇1 - Text 和 Button 组件详解
- 「Mac畅玩鸿蒙与硬件12」鸿蒙 UI 组件篇2 - Column 和 Row 布局组件使用
小结
通过数字键盘的实现,用户可以学习如何使用按钮组件实现简单的用户交互,并掌握如何通过状态管理和组件间的数据传递进行动态界面更新。本应用适合初学者了解按钮交互和状态管理的基本用法。
下一篇预告
在下一篇「UI互动应用篇20 - 闪烁按钮效果」中,我们将展示如何实现一个闪烁按钮效果。该按钮将定期改变颜色,形成闪烁的视觉效果,为用户带来动感的互动体验。
上一篇: 「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
下一篇: 「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果
作者:SoraLuna
链接:https://www.nutpi.net/thread?topicId=376
來源:坚果派
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章:
「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用
本篇将带你实现一个数字键盘应用,支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。 关键词 UI互动应用数字键盘按钮组件状态管理用户交互 一、功能说明 数字键盘应用将实现以下功能&…...
【前端知识】npm命令行详细说明
npm命令行详细说明 概述一、定义与功能二、基本命令三、配置文件与注册表四、应用场景五、高级特性 环境设置1. 设置镜像源2. 配置全局依赖存储路径3. 配置缓存路径4. 查看所有配置5. 清除缓存6. 升级npm版本 npm组件打包1. 初始化项目2. 安装依赖3. 构建脚本4. 打包项目5. 发布…...
Python网络爬虫技术详解与实践案例
Python网络爬虫技术详解与实践案例 在大数据和人工智能盛行的今天,数据的获取与分析成为许多项目和业务的关键。网络爬虫作为一种自动化的数据采集工具,广泛应用于数据挖掘、市场分析、情报收集等领域。本文将详细介绍Python网络爬虫的基本概念、工作流程、进阶技巧,并附上…...
【遥感目标检测综述】【GRSS】遥感目标检测与深度学习的相遇:挑战与进展的元综述
Remote Sensing Object Detection Meets Deep Learning: A Meta-review of Challenges and Advances 遥感目标检测与深度学习的相遇:挑战与进展的元综述 论文链接 0.论文摘要和作者信息 摘要 遥感目标检测(RSOD)是遥感领域最基…...
【大数据技术基础】 课程 第3章 Hadoop的安装和使用 大数据基础编程、实验和案例教程(第2版)
第3章 Hadoop的安装和使用 3.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,为用户提供了系统底层细节透明的分布式基础架构。Hadoop是基于Java语言开发的,具有很好的跨平台特性,并且可以部署在廉价的计算机集群中。H…...
【机器学习】机器学习的基本分类-监督学习-决策树-C4.5 算法
C4.5 是由 Ross Quinlan 提出的决策树算法,是对 ID3 算法的改进版本。它在 ID3 的基础上,解决了以下问题: 处理连续型数据:支持连续型特征,能够通过划分点将连续特征离散化。处理缺失值:能够在特征值缺失的…...
云计算vsphere 服务器上添加主机配置
这里是esxi 主机 先把主机打开 然后 先开启dns 再开启 vcenter 把每台设备桌面再vmware workstation 上显示 同上也是一样 ,因为在esxi 主机的界面可能有些东西不好操作 我们选择主机和集群 左边显示172.16.100.200...
Linux笔记---进程:进程替换
1. 进程替换的概念 进程替换是指在一个正在运行的进程中,用一个新的程序替换当前进程的代码和数据,使得进程开始执行新的程序,而不是原来的程序。 这种技术通常用于在不创建新进程的情况下,改变进程的行为。 我们之前谈到过for…...
量化交易backtrader实践(五)_策略综合篇(1)_股票软件指标回测
在第三章6到9节,我们学习和实践了大部分股票软件指标,且这些指标是backtrader内置指标实践中没有讲到过的。然后,在进行策略综合之前,我们先热个身,把一些可能比较有参考意义的股票软件内置指标在backtrader里给实现了…...
4.STM32通信接口之SPI通信(含源码)---软件SPI与W25Q64存储模块通信实战《精讲》
经过研究SPI协议和W25Q64,逐步了解了SPI的通信过程,接下来,就要进行战场实战了!跟进Whappy步伐! 目标:主要实现基于软件的SPI的STM32对W25Q64存储写入和读取操作! 开胃介绍(代码基本…...
MINDAGENT:游戏交互中的新兴性设计
一、摘要 1.问题/研究背景 LLM具有在多智能体系统中执行复杂调度的能力,并可以协调这些代理以完成需要广泛合作的复杂任务。 但是,目前还没有一个标准的游戏场景和相关的测试指标来评估 LLM 在游戏中的表现以及与人类玩家的合作能力。 2.研究目标/动…...
【工具变量】上市公司企业所在地城市等级直辖市、副省级城市、省会城市 计划单列市(2005-2022年)
一、包含指标: 股票代码 股票代码 股票简称 年份 所属城市 直辖市:企业所在地是否属于直辖市。1是,0否。 副省级城市:企业所在地是否属于副省级城市。1是,0否。 省会城市&a…...
C# 动态类型 Dynamic
文章目录 前言1. 什么是 Dynamic?2. 声明 Dynamic 变量3. Dynamic 的运行时类型检查4. 动态类型与反射的对比5. 使用 Dynamic 进行动态方法调用6. Dynamic 与 原生类型的兼容性7. 动态与 LINQ 的结合8. 结合 DLR 特性9. 动态类型的性能考虑10. 何时使用 Dynamic&…...
Css动画:旋转相册动画效果实现
🌈个人主页:前端青山 🔥系列专栏:Css篇 🔖人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Css篇专栏内容:Css动画:旋转相册动画效果实现 前言 随着Web技术的发展,网页不再局限于静态展示&#…...
Unity 基于Collider 组件在3D 物体表面放置3D 物体
实现 从鼠标点击的屏幕位置发送射线,以射线监测点击到的物体,根据点击物体的法线向量调整放置物体的位置及朝向。 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit, 100)) {obj.transform.…...
Hbase整合Mapreduce案例1 hdfs数据上传至hbase中——wordcount
目录 整合结构准备java API 编写pom.xmlMain.javaMap.javaReduce 运行 整合结构 准备 上传hdfs data.txt数据 data.txt I am wunaiieq QAQ 123456 Who I am In todays interconnected world the role of technology cannot be overstated It has revolutionized the way we …...
PyQt 中的无限循环后台任务
在 PyQt 中实现一个后台无限循环任务,需要确保不会阻塞主线程,否则会导致 GUI 无响应。常用的方法是利用 线程(QThread) 或 任务(QRunnable 和 QThreadPool) 来运行后台任务。以下是一些实现方式和关键点&a…...
5G CPE核心器件-基带处理器(三)
5G CPE 核心器件 -5G基带芯片 基带芯片简介基带芯片组成与结构技术特点与发展趋势5G基带芯片是5G CPE中最核心的组件,负责接入5G网络,并进行上下行数据业务传输。移动通信从1G发展到5G,终端形态产生了极大的变化,在集成度、功耗、性能等方面都取得巨大的提升。 基带芯片简…...
鸿蒙next版开发:拍照实现方案(ArkTS)
文章目录 拍照功能开发步骤1. 导入相关接口2. 创建会话3. 配置会话4. 触发拍照5. 监听拍照输出流状态 结语 在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机功能,特别是拍照功能。本文将详细介绍如何在ArkTS中实现拍照功能,并提供代码…...
C++面试突破---C/C++基础
1.C特点 1. C在C语言基础上引入了面对对象的机制,同时也兼容C语言。 2. C有三大特性(1)封装。(2)继承。(3)多态; 3. C语言编写出的程序结构清晰、易于扩充,程序可读性好。…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器
——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的一体化测试平台,覆盖应用全生命周期测试需求,主要提供五大核心能力: 测试类型检测目标关键指标功能体验基…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
