news 2026/4/15 23:07:58

【鸿蒙开发实战】HarmonyOS单词库应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【鸿蒙开发实战】HarmonyOS单词库应用

核心功能:

  1. 添加单词:输入英文单词和中文释义

  2. 删除单词:每个单词项都有删除按钮

  3. 搜索功能:实时搜索单词或释义

  4. 统计信息:显示单词总数

界面特点:

  • 简洁的Material Design风格

  • 两种视图模式:列表视图和添加视图

  • 响应式布局,适配不同屏幕

  • 实时搜索过滤

  • 添加示例单词按钮

使用说明:

  1. 点击"添加新单词"切换到添加视图

  2. 输入英文单词和中文释义

  3. 点击"添加单词"保存

  4. 在列表视图中可以删除单词或搜索单词

完整代码

// WordsLibrary.ets import { promptAction } from '@ohos.promptAction'; import { display } from '@ohos.display'; // 定义单词数据模型 class WordItem { id: number; word: string; meaning: string; date: string; constructor(id: number, word: string, meaning: string) { this.id = id; this.word = word; this.meaning = meaning; this.date = new Date().toLocaleString(); } } @Entry @Component struct WordsLibrary { // 状态管理 @State words: WordItem[] = []; @State inputWord: string = ''; @State inputMeaning: string = ''; @State searchText: string = ''; @State currentView: string = 'list'; // 'list' 或 'add' // 添加单词 addWord() { if (!this.inputWord.trim() || !this.inputMeaning.trim()) { promptAction.showToast({ message: '请输入完整的单词和释义' }); return; } const newWord = new WordItem( Date.now(), this.inputWord.trim(), this.inputMeaning.trim() ); this.words = [newWord, ...this.words]; this.inputWord = ''; this.inputMeaning = ''; promptAction.showToast({ message: '添加成功' }); this.currentView = 'list'; } // 删除单词 deleteWord(id: number) { this.words = this.words.filter(item => item.id !== id); promptAction.showToast({ message: '删除成功' }); } // 获取显示的单词列表(支持搜索) getDisplayWords(): WordItem[] { if (!this.searchText.trim()) { return this.words; } const search = this.searchText.toLowerCase().trim(); return this.words.filter(item => item.word.toLowerCase().includes(search) || item.meaning.toLowerCase().includes(search) ); } // 获取统计信息 getStats(): string { return `共 ${this.words.length} 个单词`; } build() { Column() { // 标题栏 Row({ space: 10 }) { Text('单词库') .fontSize(24) .fontWeight(FontWeight.Bold) .fontColor(Color.Blue) Text(this.getStats()) .fontSize(14) .fontColor(Color.Gray) } .width('100%') .justifyContent(FlexAlign.Center) .padding(15) // 顶部按钮 Row({ space: 20 }) { Button(this.currentView === 'list' ? '单词列表' : '返回列表') .onClick(() => { this.currentView = 'list'; }) .backgroundColor(this.currentView === 'list' ? Color.Blue : Color.Gray) Button('添加新单词') .onClick(() => { this.currentView = 'add'; }) .backgroundColor(this.currentView === 'add' ? Color.Blue : Color.Gray) } .width('100%') .justifyContent(FlexAlign.Center) .padding(10) // 搜索栏(仅在列表视图显示) if (this.currentView === 'list') { Row() { TextInput({ placeholder: '搜索单词或释义...' }) .width('80%') .height(40) .onChange((value: string) => { this.searchText = value; }) if (this.searchText) { Button('✕') .width(40) .height(40) .fontSize(12) .onClick(() => { this.searchText = ''; }) } } .width('90%') .padding(10) .borderRadius(20) .backgroundColor(Color.White) .shadow({ radius: 2, color: Color.Gray, offsetX: 1, offsetY: 1 }) } // 主要内容区域 if (this.currentView === 'list') { this.buildWordList(); } else { this.buildAddForm(); } } .width('100%') .height('100%') .backgroundColor(Color.LightGray) .padding(10) } // 构建单词列表 @Builder buildWordList() { const displayWords = this.getDisplayWords(); if (displayWords.length === 0) { Column() { Image($r('app.media.icon')) .width(100) .height(100) .margin({ bottom: 20 }) Text(this.searchText ? '未找到相关单词' : '暂无单词,点击"添加新单词"开始学习') .fontSize(16) .fontColor(Color.Gray) .textAlign(TextAlign.Center) } .width('100%') .height('60%') .justifyContent(FlexAlign.Center) .alignItems(HorizontalAlign.Center) return; } List({ space: 10 }) { ForEach(displayWords, (item: WordItem) => { ListItem() { Column({ space: 5 }) { // 单词和释义 Row() { Text(item.word) .fontSize(18) .fontWeight(FontWeight.Bold) .fontColor(Color.Black) Text(`(${new Date(item.date).toLocaleDateString()})`) .fontSize(12) .fontColor(Color.Gray) .margin({ left: 10 }) } .width('100%') .justifyContent(FlexAlign.Start) Text(item.meaning) .fontSize(16) .fontColor(Color.DarkGray) .width('100%') .textAlign(TextAlign.Start) // 操作按钮 Row({ space: 20 }) { Button('删除') .width(60) .height(30) .fontSize(12) .backgroundColor(Color.Red) .fontColor(Color.White) .onClick(() => this.deleteWord(item.id)) } .width('100%') .justifyContent(FlexAlign.End) .margin({ top: 10 }) } .padding(15) .width('100%') .backgroundColor(Color.White) .borderRadius(10) .shadow({ radius: 2, color: Color.Gray, offsetX: 1, offsetY: 1 }) } }, (item: WordItem) => item.id.toString()) } .width('100%') .height('75%') .margin({ top: 10 }) } // 构建添加表单 @Builder buildAddForm() { Column({ space: 20 }) { // 单词输入 Column({ space: 5 }) { Text('单词') .fontSize(16) .fontColor(Color.Black) .width('90%') .textAlign(TextAlign.Start) TextInput({ placeholder: '输入英文单词' }) .width('90%') .height(50) .fontSize(18) .onChange((value: string) => { this.inputWord = value; }) .backgroundColor(Color.White) .borderRadius(10) .padding(10) } // 释义输入 Column({ space: 5 }) { Text('释义') .fontSize(16) .fontColor(Color.Black) .width('90%') .textAlign(TextAlign.Start) TextInput({ placeholder: '输入中文释义' }) .width('90%') .height(50) .fontSize(18) .onChange((value: string) => { this.inputMeaning = value; }) .backgroundColor(Color.White) .borderRadius(10) .padding(10) } // 添加按钮 Button('添加单词') .width('90%') .height(50) .fontSize(18) .backgroundColor(Color.Blue) .fontColor(Color.White) .onClick(() => this.addWord()) .margin({ top: 30 }) // 示例单词 Column({ space: 10 }) { Text('示例:') .fontSize(14) .fontColor(Color.Gray) Row({ space: 20 }) { Button('Apple') .onClick(() => { this.inputWord = 'Apple'; this.inputMeaning = '苹果'; }) Button('Book') .onClick(() => { this.inputWord = 'Book'; this.inputMeaning = '书'; }) Button('Computer') .onClick(() => { this.inputWord = 'Computer'; this.inputMeaning = '计算机'; }) } } .margin({ top: 30 }) } .width('100%') .padding(20) .backgroundColor(Color.White) .borderRadius(15) .shadow({ radius: 5, color: Color.Gray, offsetX: 2, offsetY: 2 }) .margin({ top: 20 }) } }

入门鸿蒙开发又怕花冤枉钱?别错过!现在能免费系统学 -- 从 ArkTS 面向对象核心的类和对象、继承多态,到吃透鸿蒙开发关键技能,还能冲刺鸿蒙基础 +高级开发者证书,更惊喜的是考证成功还送好礼!快加入我的鸿蒙班,一起从入门到精通,班级链接:点击https://developer.huawei.com/consumer/cn/training/classDetail/b7365031334e4353a9a0fd6785bb0791?type=1?ha_source=hmosclass&ha_sourceId=89000248免费进入

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 14:02:28

15、高级 SQL 与编程框架实战解析

高级 SQL 与编程框架实战解析 1. 多表查询之 JOIN 操作 在实际应用中,单表查询的情况较为少见。例如,我们通常会想知道“展示电子产品类别下的所有产品”,而非“展示类别 ID 为 2 的所有产品”。为了从多个表中提取信息,需要使用 JOIN 操作。 1.1 JOIN 基本语法 基本的…

作者头像 李华
网站建设 2026/4/16 15:31:31

Dify与Flask/Django框架共存的架构设计

Dify与Flask/Django框架共存的架构设计 在企业智能化转型加速的今天,越来越多的传统业务系统开始尝试引入大语言模型(LLM)能力——从智能客服到自动报告生成,从工单分类到知识问答。然而,现实往往并不理想:…

作者头像 李华
网站建设 2026/4/16 12:23:51

Dify平台的实体抽取准确率实测报告

Dify平台的实体抽取能力实测分析 在企业级AI应用快速落地的今天,如何让大语言模型(LLM)真正服务于具体的业务场景,而非停留在“能说会道”的对话层面,成为技术选型的关键考量。尤其是在工单处理、客户意图识别、合同信…

作者头像 李华
网站建设 2026/4/16 14:29:24

Dify如何保证多租户环境下的隔离安全性?

Dify如何保证多租户环境下的隔离安全性? 在企业级 AI 应用快速落地的今天,一个核心挑战浮出水面:如何让多个团队、部门甚至客户安全地共用同一套大模型开发平台,而不会彼此“窥探”或干扰?这不仅是性能问题&#xff0c…

作者头像 李华
网站建设 2026/4/16 12:13:58

使用libusb编写用户态驱动操作指南

打开物理世界的通用钥匙:用 libusb 编写用户态 USB 驱动实战指南 你有没有遇到过这样的场景?手头有一块自研的 USB 设备,MCU 已经跑通了通信协议,但主机端却卡在“找不到设备”或“权限被拒绝”的红字报错上。传统做法是写内核驱…

作者头像 李华
网站建设 2026/4/16 12:27:16

如何用Dify构建多语言AI客服解决方案?

如何用Dify构建多语言AI客服解决方案? 在全球化业务不断扩展的今天,企业面临的客户服务挑战愈发复杂:用户来自不同国家和地区,使用多种语言提问;咨询内容涵盖产品、售后、政策等多个维度;而传统人工客服成本…

作者头像 李华