「Mac畅玩鸿蒙与硬件42」UI互动应用篇19 - 数字键盘应用

简介: 本篇将带你实现一个数字键盘应用,支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。

本篇将带你实现一个数字键盘应用,支持用户通过点击数字键输入数字并实时更新显示内容。我们将展示如何使用按钮组件和状态管理来实现一个简洁且实用的数字键盘。

20241202_213038.gif


关键词
  • UI互动应用
  • 数字键盘
  • 按钮组件
  • 状态管理
  • 用户交互

一、功能说明

数字键盘应用将实现以下功能:

  1. 用户可以点击数字键进行输入。
  2. 输入的数字将实时显示在屏幕上。
  3. 用户可以清除输入的内容或删除最后一个数字。
  4. 每个数字按钮将触发相应的事件,更新显示内容。

二、所需组件

  • @Entry@Component 装饰器
  • ColumnRow 布局组件
  • Button 组件用于实现数字键
  • Text 组件用于显示输入的内容
  • @State 修饰符用于状态管理

三、项目结构

  • 项目名称NumberKeyboardApp
  • 自定义组件名称NumberKeyboardPageNumberButton
  • 代码文件NumberKeyboardPage.etsIndex.etsNumberButton.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);
  }
}

效果示例:用户可以点击数字按钮,输入内容实时更新。点击清空按钮清除所有输入,点击删除按钮删除最后一个字符。

20241202_213038.gif


五、代码解读

  • 按钮组件NumberButton 组件通过 @Prop 获取标签(数字)和父组件,点击按钮时更新父组件的输入内容。
  • 状态管理:通过 @State 管理当前输入的内容,每次点击按钮,输入的数字都会追加到 input 字符串中。
  • 清空和删除:提供清空和删除按钮,分别通过 clearInputdeleteLastCharacter 方法清除输入或删除最后一个字符。

六、优化建议

  1. 增加音效:为按钮点击增加音效,提升交互体验。
  2. 支持小数点:添加小数点按钮,支持浮动数字输入。
  3. 增加历史记录功能:记录用户输入的历史,支持快速恢复和查看之前的输入内容。

七、相关知识点


小结

通过数字键盘的实现,用户可以学习如何使用按钮组件实现简单的用户交互,并掌握如何通过状态管理和组件间的数据传递进行动态界面更新。本应用适合初学者了解按钮交互和状态管理的基本用法。


下一篇预告

在下一篇「UI互动应用篇20 - 闪烁按钮效果」中,我们将展示如何实现一个闪烁按钮效果。该按钮将定期改变颜色,形成闪烁的视觉效果,为用户带来动感的互动体验。


上一篇: 「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器

下一篇: 「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果


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


目录
相关文章
|
2天前
「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
本篇将带你实现一个多滑块联动的控制器应用。用户可以通过拖动多个滑块,动态控制不同参数(如红绿蓝三色值),并实时显示最终结果。我们将以动态颜色调节为例,展示如何结合状态管理和交互逻辑,打造一个高级的滑块控制器应用。
135 78
「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器
|
8天前
|
存储 UED
「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器
本篇将带你实现一个随机颜色变化器应用。用户点击“随机颜色”按钮后,界面背景会随机变化为淡色系颜色,同时显示当前的颜色代码,页面还会展示一只猫咪图片作为装饰,提升趣味性。
59 36
「Mac畅玩鸿蒙与硬件37」UI互动应用篇14 - 随机颜色变化器
|
5天前
「Mac畅玩鸿蒙与硬件38」UI互动应用篇15 - 猜数字增强版
本篇将带你实现一个升级版的数字猜谜游戏。相比基础版,新增了计分和历史记录功能,用户可以在每次猜测后查看自己的得分和猜测历史。此功能展示了状态管理的进阶用法以及如何保存和显示历史数据。
58 31
「Mac畅玩鸿蒙与硬件38」UI互动应用篇15 - 猜数字增强版
|
8天前
|
UED 开发者
「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
本篇将带你实现一个简单的数字滚动抽奖器。用户点击按钮后,屏幕上的数字会以滚动动画的形式随机变动,最终显示一个抽奖数字。这个项目展示了如何结合定时器、状态管理和动画实现一个有趣的互动应用。
58 23
「Mac畅玩鸿蒙与硬件36」UI互动应用篇13 - 数字滚动抽奖器
|
4天前
|
前端开发 UED
「Mac畅玩鸿蒙与硬件39」UI互动应用篇16 - 倒计时环形进度条
本篇将带你实现一个倒计时环形进度条应用。用户可以设置倒计时的时间,启动倒计时后,应用会动态显示一个随着时间递减的环形进度条,同时伴有数字倒计时显示。这是结合动画效果和时间管理的实用示例。
86 10
「Mac畅玩鸿蒙与硬件39」UI互动应用篇16 - 倒计时环形进度条
|
9天前
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
本篇将带你实现一个简易日历应用,显示当前月份的日期,并支持选择特定日期的功能。用户可以通过点击日期高亮选中,还可以切换上下月份,体验动态界面的交互效果。
35 12
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
|
11天前
|
存储 UED
「Mac畅玩鸿蒙与硬件33」UI互动应用篇10 - 数字猜谜游戏
本篇将带你实现一个简单的数字猜谜游戏。用户输入一个数字,应用会判断是否接近目标数字,并提供提示“高一点”或“低一点”,直到用户猜中目标数字。这个小游戏结合状态管理和用户交互,是一个入门级的互动应用示例。
47 7
「Mac畅玩鸿蒙与硬件33」UI互动应用篇10 - 数字猜谜游戏
|
13天前
「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用
本篇将带你实现一个番茄钟倒计时应用,用户可以设置专注时间和休息时间的时长,点击“开始专注”或“开始休息”按钮启动计时,应用会在倒计时结束时进行提醒。番茄钟应用对于管理时间、提升工作效率非常有帮助,并且还会加入猫咪图片作为界面装饰,让体验更加有趣。
59 8
「Mac畅玩鸿蒙与硬件32」UI互动应用篇9 - 番茄钟倒计时应用
|
9天前
|
存储
「Mac畅玩鸿蒙与硬件34」UI互动应用篇11 - 颜色选择器
本篇将带你实现一个颜色选择器应用。用户可以从预设颜色中选择,或者通过输入颜色代码自定义颜色来动态更改界面背景。该应用展示了如何结合用户输入、状态管理和界面动态更新的功能。
27 3
「Mac畅玩鸿蒙与硬件34」UI互动应用篇11 - 颜色选择器
|
缓存 Python
mac彻底卸载应用
删除应用 打开访达,找到PyCharm应用,移到废纸篓; 清除残留数据 清理缓存,参数,日志相关配置文件,示例文件名:PyCharm2019.2 打开终端依次执行下列命令 cd ~/Library/Preferences/ rm -rf PyCharm2019.

热门文章

最新文章