【開發者說】欄目是為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](https://file1.elecfans.com//web2/M00/95/BE/wKgaomTnC3yAIPbyAAB73VqpLPM908.png)
圖1 文件目錄結構
1. 此應用的核心代碼文件(即eTS文件)均在/entry/src/main/ets目錄下,文件后綴為“.ets”。由圖1可知,eTS文件主要分為兩部分:
- ets/default/module目錄下的eTS文件,用于定義IQ和EQ測試題目數據。
- ets/default/pages目錄下的eTS文件,用于定義應用的UI界面。
(左右滑動,查看更多)"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文件)的代碼如下:
(左右滑動,查看更多)struct Index {
private opacityValue: number = 0
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-00000011498187073.頁面路由
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. AppStorageAppStorage是整個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文章
5394瀏覽量
127123 -
華為
+關注
關注
216文章
34545瀏覽量
253136 -
HarmonyOS
+關注
關注
79文章
1983瀏覽量
30630
原文標題:想學習eTS開發?教你開發一款IQ-EQ測試應用
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論