英语单词学习页面+单词朗读实现 -- 【1】页面实现 ##HarmonyOS SDK AI##

上海张律师
• 阅读 1

​ 先看一下页面效果 英语单词学习页面+单词朗读实现 -- 【1】页面实现 ##HarmonyOS SDK AI##

整体页面是一个比较简洁的页面,其中有两个特色功能

  1. 对于例句中,能够实现将当前的单词从句子中进行识别并突出显示

  2. 对于单词和句子,可以进行朗读,这个朗读使用的是Core Speech Kit(基础语音服务),即端侧AI

我们分两篇文章来讲解

对于例句单词效果突出显示,一开始我想到的是“属性字符串StyledString/MutableStyledString”。

通过阅读相关文档,我认为属性字符串并不适用在此场景中,理由如下:

  1. 每个单词的句子是不同的,所以没有办法提前设定好数据,即从第几个字到第几个字显示什么样式,其他字显示什么样式,要通过代码去分析

  2. 每个单词可能有多句句子,在实际项目中,具体有几句句子是不确定的,那就要通过数组来弄多个controller,是非常不方便的

通过分析句子的结构,我们发现,句子就是单词+空格+单词+空格的形式构成的,因此完全可以通过split先把句子用空格来分割,再通过ForEach进行循环渲染,通过内容和单词的比对来判断是否对单词进行加粗处理

首先,我们先设置一下模拟数据,包括句子sentence,显示的单词word,和用来测试的数组test,这个test中每一个元素都是string

  @State sentence:string = "The cat is sleeping";
  @State test:Array<string> = [];
  @State word:string = "the";

然后在aboutToAppear中对这个句子进行split分割

this.test = this.sentence.split(" ");

最后通过ForEach进行循环渲染,但是这里要注意的是,如果直接用== 或者 === 判断的话,是无法区分大小写的,因此要先把每一个单词通过toLowerCase转小写,然后再参与判断

  ForEach(this.test,(item:string)=>{
     Text(item)
     .margin({right:5})
     .fontWeight(item.toLowerCase() == this.word ? 'bold' : '')
  })

这种实现方式相比于属性字符串来说,整体开发难度下降了很多,代码量也下降了很多,所以,还是需要根据针对性的场景来挑选具体的实现方案

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
HarmonyOS开发从0到1:购物页面之商品分类页面
目录:JS业务逻辑(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fharmonyos.51cto.com%2Fposts%2F3001%23kyzg)视图渲染层(https://www.oschina.net/action/GoToLink?url
Wesley13 Wesley13
3年前
CSS3实现页面加载进度条
什么情况下会使用到页面加载进度条?当页面中的需要加载的内容很多,用户直接进入则看不到任何内容,体验不好,这个时候就需要使用到页面加载的一个动画,在页面加载结束后再显示主体内容。实现页面加载进度条有哪几种方式?一般可分为两种,1.设置多少时间后显示页面,2.根据页面加载的文档状态来实现如何根据文档状态来实现?
Stella981 Stella981
3年前
Chrome扩展程序一键生成网页骨架屏
对于依赖接口渲染的页面,在拿到数据之前页面往往是空白的,为了提示用户当前正在加载中,往往会使用进度条、loading图标或骨架屏的方式。对于前两种方案而言,实现比较简单;本文主要研究骨架屏的应用及实现,并给出一种使用Chrome扩展工具快速生成骨架屏的方案。首先看看效果先放一个动图展示!(https://oscimg.oschina
程序员一鸣 程序员一鸣
2天前
鸿蒙开发:Navigation路由组件使用由繁入简
Navigation是路由容器组件,一般作为首页的根容器,也就是说,我们只在首页面使用即可,对于所有的子页面使用NavDestination即可,项目中的页面,无外乎首页面和子页面,首页面还好,书写一次即可,而子页面就非常非常的多了,所以,需要针对模版进行抽取。
上海张律师 上海张律师
11小时前
鸿蒙地图功能开发【1. 开发准备】##地图开发##
​对于地图功能的开发,有以下三种思路1.使用鸿蒙官方的MapKit进行开发2.使用第三方地图的SDK(例如高德地图、百度地图)3.做一个基于h5的地图页面,通过Web组件去引入对于这三种方案,每一种都有自己的特点原生的MapKit,目前来看文档是最全面的也
鸿蒙小林 鸿蒙小林
4小时前
《仿盒马》app开发技术分享-- 个人中心页面(19)
技术栈Appgalleryconnect开发准备上一节我们实现了分类页面的所有联动效果,这一节我们要开始完成一个新的页面,这个页面是我们主界面的第四个板块,就是个人中心页面。在这个模块,我们可以显示一些用户信息,以及用户相关的各类功能的入口功能分析要实现个
上海张律师 上海张律师
4小时前
英语单词学习页面+单词朗读实现 -- 【2】单词朗读实现 ##HarmonyOS SDK AI##
​注:我需要先强调一下,我的目的不是把官网文档里的东西复制一遍……而是分享自己实际开发过程中遇到的问题和思考仍然先放一下效果图这里对于单词和例句,都是可以通过点击图片进行播报的这个功能的原理是通过文字转语音的形式实现的,之前也写过文章分享过在API9下如何
上海张律师 上海张律师
4小时前
如何监听组件再次显示的事件?
​HarmonyOS应用开发我们知道,对于组件的生命周期,有aboutToAppear和aboutToDisAppear,即监听这个组件被挂载和卸载的事件,和被@Entry修饰的页面不同,组件是没有每次显示都能触发的onPageShow这个生命周期的,但是
绣鸾 绣鸾
1年前
Eudic欧路词典 for Mac增强版
是一个功能强大的英语学习工具,它包含了丰富的英语词汇、短语和例句,并提供了发音、例句朗读、单词笔记等功能。多语种支持:欧路词典支持多种语言,包括英语、中文、日语、法语等等,用户可以方便地进行多语言学习。海量词库:欧路词典拥有海量的词库,包括牛津、朗文、柯林
绣鸾 绣鸾
1年前
Eudic欧路词典 4 for Mac(英语学习工具)
是一个功能强大的英语学习工具,它包含了丰富的英语词汇、短语和例句,并提供了发音、例句朗读、单词笔记等功能。多语种支持:欧路词典支持多种语言,包括英语、中文、日语、法语等等,用户可以方便地进行多语言学习。海量词库:欧路词典拥有海量的词库,包括牛津、朗文、柯林