0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于HarmonyOS的ArkUI框架开发IQ- EQ测试应用

HarmonyOS开发者 来源:HarmonyOS开发者 作者:HarmonyOS开发者 2022-07-10 17:32 次阅读

开发者说】栏目是为HarmonyOS开发者提供的展示和分享平台,在这里,大家可以发表自己的技术洞察和见解,也可以展示自己的开发心得和成果。

欢迎大家积极投稿,后台回复【投稿】,即可获得投稿渠道。期待你们的分享~


本期我们给大家带来的是开发者Mack的分享,希望能给你的HarmonyOS开发之旅带来启发~


开发者Mack基于HarmonyOS的ArkUI框架开发的IQ- EQ测试应用。此应用采用eTS语言开发,包含启动页面、测试入口页面、答题页面和得分页面等多个页面,功能非常完善。

IQ- EQ测试应用的实现效果,请参考华为开发者论坛中作者的原帖:

https://developer.huawei.com/consumer/cn/blog/topic/03728323510050211

此应用的开发过程中涉及很多知识点,下面我们一起跟随Mack的开发过程,一起学习eTS开发知识吧~

一、代码结构介绍

我们先来看看IQ- EQ测试应用的文件目录结构,相关文件说明如图1所示。

e6442922-f203-11ec-ba43-dac502259ad0.png

图1 文件目录结构


1. 此应用的核心代码文件(即eTS文件)均在/entry/src/main/ets目录下,文件后缀为“.ets”。由图1可知,eTS文件主要分为两部分:
  • ets/default/module目录下的eTS文件,用于定义IQ和EQ测试题目数据。
  • ets/default/pages目录下的eTS文件,用于定义应用的UI界面。
2. “resource”目录为项目资源存放目录,存放图片资源和国际化字符串等。3. config.json为应用的配置文件。eTS开发时,需关注该文件中module对象的js标签内容。
"js": [  {    "mode": {      "syntax": "ets",   //表示以声明式语法风格进行编程      "type": "pageAbility"    },    "pages": [      "pages/index",   //“pages”列表的第一个页面为应用的启动页      "pages/start",      "pages/iqTest",      "pages/iqScore",      "pages/eqTest",      "pages/eqScore"    ],    "name": "default",    "window": {      "designWidth": 720,      "autoDesignWidth": false    }  }]
(左右滑动,查看更多)


二、关键代码及知识点

在开发IQ- EQ测试应用的过程中,主要运用了容器组件、装饰器、页面路由和AppStorage等。下面,我们就结合IQ- EQ测试应用的关键代码,一起来学习这些知识点。

1. 容器组件


方舟开发框架提供了丰富的系统预置组件。开发者可以组合系统组件为自定义组件,通过这种方式将页面组件化为一个个独立的UI单元,实现页面不同单元的独立创建、开发和复用。本次IQ- EQ测试应用,通过对容器组件的组合使用,实现了多个页面的UI布局。比如,EQ测试题目页(对应ets/default/pages/eqTest.ets文件)的部分布局代码如下:
  build() {    Column() {      // 顶部标题      TopTitle()      Scroll() {        Column() {          // 显示问题列表          List() {            ForEach(this.questionsDataArray, item => {              ListItem() {                // 循环展示问题                QuestionsListItem({ questionItem: item,  questionsId:item.id,                  btnSubmit:$btnSubmit1})              }            }, item => item.id.toString())          }
(左右滑动,查看更多)


此应用使用到的一些容器组件,说明如下:
  • Column:沿垂直方向布局的容器组件。
  • Row:沿水平方向布局的容器组件。
  • Scroll:可滚动的容器组件,当子组件的布局尺寸超过父组件的视口时,内容可以滚动。
  • Grid:网格容器组件,采用二维布局,将容器划分成“行”和“列”。
  • List:列表组件,包含一系列相同宽度的列表项。
  • Flex:弹性布局组件。
  • Stack:堆叠容器组件,子组件按照顺序依次入栈,后一个子组件覆盖前一个子组件。
更多组件说明,请参见:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/ts-container-column-0000001111421414

2.装饰器


方舟开发框架还定义了一些具有特殊含义的装饰器,用于装饰类、结构、方法和变量。下面就结合本次IQ- EQ测试应用,为大家介绍几种常用的装饰器。比如,启动页(对应ets/default/pages/index.ets文件)的代码如下:
@Entry@Componentstruct Index {

  @State private opacityValue: number = 0  @State private scaleValue: number = 0

  build() {  }}
(左右滑动,查看更多)


以上代码中涉及到了三种常用的装饰器:@Component、@Entry、@State。


(1) @Component

开发者可以组合系统组件为自定义组件,通过这种方式将页面组件化为一个个独立的UI单元,实现页面不同单元的独立创建、开发和复用。

@Component是组件化的标志。@Component装饰的struct,表示该结构体具有组件化能力,能够成为一个独立的组件,称为自定义组件。自定义组件必须定义build方法,在build方法里描述UI结构。

(2) @Entry

@Entry装饰的自定义组件,表示该组件是页面的总入口,也可以理解为页面的根节点。加载页面时,将首先创建并呈现@Entry装饰的自定义组件。值得注意的是,一个页面有且仅能有一个@Entry,只有被@Entry修饰的组件或者其子组件,才会在页面上显示。

(3) @State

@State装饰的变量是组件内部的状态数据,当这些状态数据被修改时,将会调用所在组件的build方法进行UI刷新。

除了以上三种装饰器,方舟开发框架还提供了@Prop、@Link、@Observed、@ObjectLink、@Consume、@Provide、@StorageProp、 @StorageLink、@Watch、@Preview、@Builder、@Extend、@CustomDialog等装饰器。装饰器的更多详细内容,尽在声明式语法中。

声明式语法的详细介绍,请参见:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ts-syntax-intro-0000001149818707

3.页面路由


IQ测试时,答完一题后支持自动跳转到下一题,这里涉及页面路由的操作。为方便开发者实现页面路由的各种操作,HarmonyOS提供了多种页面路由接口IQ测试题目页(对应ets/default/pages/iqTest.ets文件)中页面路由的代码如下:
import router from '@system.router';

router.push({  uri: 'pages/iqTest',  params: { paramCurrentId:(this.currentId + 1)}  // 自动跳转下一题})
(左右滑动,查看更多)


在调用页面路由接口之前,先导入router模块。然后,通过调用router.push()接口,将uri指定的页面添加到路由栈中,即可实现跳转到uri指定的页面。


上面仅介绍了一种页面路由接口。更多页面路由接口的详细说明,请参见:

https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-basic-features-routes-0000000000611824

4. AppStorage

AppStorage是整个UI应用程序状态的中心“数据库”,包含整个应用程序需要访问的所有状态属性。AppStorage提供了相应的装饰器和接口供应用程序使用。应用程序的UI组件可以通过装饰器将应用程序状态数据与AppStorage进行同步。此外,应用程序还可以通过AppStorage提供的接口添加、读取、修改和删除AppStorage中保存的应用程序状态属性。API所做更改引起的状态数据变更会被同步到UI组件上,应用程序将会调用所在组件的build方法进行UI更新。

此IQ- EQ测试应用也调用了AppStorage的接口来修改和删除状态属性。(1) IQ测试时,应用程序将每一题的选择结果保存到AppStorage中。代码如下:
// 点击图片表示选择, 保存题目的选择结果AppStorage.SetOrCreate("question_id_"+this.currentId,item.id)
(左右滑动,查看更多)


(2) IQ测试完成后,点击“再测一遍”时,应用程序调用AppStorage的接口删除所有题目的选择结果。代码如下:
AppStorage.Delete('question_id_'+item.id)
(左右滑动,查看更多)


AppStorage的更多详情,请参见:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ts-application-states-appstorage-0000001119929480

三、结束语

上面介绍的eTS开发知识,你已经学会了吗?感兴趣的小伙伴,可以获取IQ- EQ测试应用的完整代码,继续学习哦~

IQ- EQ测试应用的源码地址:https://gitee.com/mackyuan/IQ_EQ_Test_eTS


审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    5302

    浏览量

    126639
  • 华为
    +关注

    关注

    216

    文章

    34435

    浏览量

    251712
  • HarmonyOS
    +关注

    关注

    79

    文章

    1975

    浏览量

    30178

原文标题:想学习eTS开发?教你开发一款IQ-EQ测试应用

文章出处:【微信号:HarmonyOS_Dev,微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Vysper基于MINA网络框架开发

    Vysper是一款服务器开发软件,基于MINA网络框架开发主要用于即时通讯,向App等客户端推送消息的。
    发表于 07-16 07:36

    想学习eTS开发?教你开发一款IQ-EQ测试应用

    开发者Mack基于HarmonyOSArkUI框架开发IQ- EQ
    发表于 06-23 12:01

    4天带你上手HarmonyOS ArkUI开发

    本次HarmonyOS ArkUI入门训练营课程--健康生活实战篇,手把手教大家如何制作一个合理膳食的APP前端Demo!课程实战样例通过ArkUI声明式UI开发
    发表于 09-09 14:44

    本周四晚19:00知识赋能第八期第1课丨ArkUI框架整体设计

    以通过WiFi接口开发出炫酷的WiFi应用,而这一期的直播我们邀请到了资深 OS 框架开发工程师巴延兴老师,从业以来就一致深耕终端设备的研发领域,拥有十多年的移动系统开发经验,为大家讲解Ark
    发表于 09-14 15:35

    ArkUI,更高效的框架设计

    ArkUI是一套用于构建HarmonyOS应用界面的UI开发框架,本期我们将从架构设计上来聊聊ArkUI的设计理念。
    发表于 12-21 10:26

    4天带你上手HarmonyOS ArkUI开发——《HarmonyOS ArkUI入门训练营之健康生活实战》

    框架实现。ArkUI采用极简的声明式UI描述界面语法,只需用几行简单直观的声明式代码,即可完成界面功能,内置了丰富而精美HarmonyOS Design的UI组件和API,可满足大部分跨端应用界面
    发表于 01-05 11:49

    HarmonyOS测试技术与实战-分布式UI测试框架

    HDC 2021华为开发者大会 HarmonyOS测试技术与实战-分布式UI测试框架演示
    的头像 发表于 10-23 14:49 1383次阅读
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>测试</b>技术与实战-分布式UI<b class='flag-5'>测试</b><b class='flag-5'>框架</b>

    HarmonyOS测试技术与实战-华为ArkUI开发框架和场景测试

    HDC 2021华为开发者大会HarmonyOS测试技术与实战-华为ArkUI开发框架和场景
    的头像 发表于 10-23 15:16 1895次阅读
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>测试</b>技术与实战-华为<b class='flag-5'>ArkUI</b><b class='flag-5'>开发</b><b class='flag-5'>框架</b>和场景<b class='flag-5'>测试</b>

    HarmonyOS ArkUI 3.0框架试玩初体验

       HarmonyOS ArkUI 3.0 正式到来,今天就给大家分享一下我的 HarmonyOS ArkUI 3.0 框架试玩初体验,以
    的头像 发表于 11-01 14:53 2233次阅读

    HarmonyOS ArkUI 3.0框架试玩初体验

       HarmonyOS ArkUI 3.0 正式到来,今天就给大家分享一下我的 HarmonyOS ArkUI 3.0 框架试玩初体验,以
    的头像 发表于 12-03 10:14 3541次阅读

    ArkUI,更高效的框架设计

    上期文章我们讲到了ArkUI的三大特性,同时提到了ArkUI是一套用于构建HarmonyOS应用界面的UI开发框架,本期我们将从架构设计上来
    的头像 发表于 12-21 09:15 1591次阅读

    使用platformio平台和Arduino框架开发STM32G0

    使用platformio平台和Arduino框架开发STM32G0,开发环境使用VSCode+PlatformIO插件;
    的头像 发表于 01-17 11:05 3735次阅读
    使用platformio平台和Arduino<b class='flag-5'>框架开发</b>STM32G0

    ArkUI新能力,助力应用开发更便捷

    管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用户体验。随着HarmonyOS 3.1版本的发布,ArkUI也新增许多能力,助力应用开发更便
    的头像 发表于 02-15 16:35 860次阅读

    Hypium框架使能ArkTS应用高效测试

    作者: leidan,软件测试开发工程师  HarmonyOS发布了声明式开发框架ArkUI,带来了极简高效的
    的头像 发表于 03-11 13:10 1001次阅读

    鸿蒙ArkUI-X框架开发:【开发准备】

    本文档适用于ArkUI-X框架开发的初学者。通过环境搭建、代码下载、代码编译、API扩展和使用,快速了解跨平台项目开发流程。
    的头像 发表于 05-23 21:02 473次阅读
    鸿蒙<b class='flag-5'>ArkUI</b>-X<b class='flag-5'>框架开发</b>:【<b class='flag-5'>开发</b>准备】