<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

HarmonyOS開發案例:【待辦列表】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-06 15:22 ? 次閱讀

介紹

使用ArkTS聲明式語法和基礎組件,實現簡易待辦列表。效果為點擊某一事項,替換標簽圖片、虛化文字。效果如圖所示:

相關概念

  • [ArkTS語法]:ArkTS是HarmonyOS的主要應用開發語言。ArkTS基于TypeScript(簡稱TS)語言擴展而來,是TS的超集。
  • [Text組件]:顯示一段文本的組件。
  • [Column組件]:沿垂直方向布局的容器。
  • [Row組件]:沿水平方向布局的容器。

環境搭建

軟件要求

  • [DevEco Studio]版本:DevEco Studio 3.1 Release。
  • OpenHarmony SDK版本:API version 9。

硬件要求

  • 開發板類型:[潤和RK3568開發板]。
  • OpenHarmony系統:3.2 Release。

環境搭建

完成本篇Codelab我們首先要完成開發環境的搭建,本示例以RK3568開發板為例,參照以下步驟進行:

  1. [獲取OpenHarmony系統版本]:標準系統解決方案(二進制)。以3.2 Release版本為例:
  2. 搭建燒錄環境。
    1. [完成DevEco Device Tool的安裝]
    2. [完成RK3568開發板的燒錄]
  3. 搭建開發環境。
    1. 開始前請參考[工具準備],完成DevEco Studio的安裝和開發環境配置。
    2. 開發環境配置完成后,請參考[使用工程向導]創建工程(模板選擇“Empty Ability”)。
    3. 工程創建完成后,選擇使用[真機進行調測]。
    4. 鴻蒙開發指導文檔:[qr23.cn/FBD4cY]

代碼結構解讀

本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在gitee中提供。

├──entry/src/main/ets                   // ArkTS代碼區
│  ├──common
│  │  └──constants
│  │     └──CommonConstants.ets         // 公共常量類
│  ├──entryability
│  │  └──EntryAbility.ts                // 程序入口類
│  ├──pages
│  │  └──ToDoListPage.ets               // 主頁面
│  ├──view
│  │  └──ToDoItem.ets                   // 自定義單項待辦組件
│  └──viewmodel
│     └──DataModel.ets                  // 列表數據獲取文件
└──entry/src/main/resources             // 資源文件目錄

`HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789v直接拿`

搜狗高速瀏覽器截圖20240326151547.png

構建主界面

本章節將介紹應用主頁面的實現,采用Column容器嵌套ForEach完成頁面整體布局,頁面分為兩個部分:

  • 標題區:使用Text組件顯示“待辦”標題。
  • 數據列表:使用ForEach循環渲染自定義組件ToDoItem。

效果如圖所示:

在工程pages目錄中,選中Index.ets,點擊鼠標右鍵 > Refactor > Rename,改名為ToDoListPage.ets。改名后,在工程entryability目錄下,把EntryAbility.ts文件中windowStage.loadContent方法的第一個參數修改為pages/ToDoListPage。

// EntryAbility.ts
onWindowStageCreate(windowStage: Window.WindowStage) {
  ...
  windowStage.loadContent('pages/ToDoListPage', (err, data) = > {
    ...
  });
}

選中工程的ets目錄,點擊鼠標右鍵 > new > Directory,新建view文件夾。選中新建的view文件夾,點擊鼠標右鍵 > new > ArkTS File,新建ToDoItem.ets文件。后續在此文件中封裝自定義組件。在ToDoListPage.ets中導入封裝的自定義組件ToDoItem,在aboutToAppear生命周期中初始化待辦數據totalTasks,在build方法中編寫主頁面布局,使用Text文本組件顯示標題,使用ForEach循環渲染自定義組件ToDoItem。

// ToDoListPage.ets
import ToDoItem'../view/ToDoItem';
...
@Entry
@Component
struct ToDoListPage {
  private totalTasks: Array< string > = [];

  aboutToAppear() {
    this.totalTasks = DataModel.getData();
  }

  build() {
    Column({ space: CommonConstants.COLUMN_SPACE }) {
      Text($r('app.string.page_title'))
        ...
      ForEach(this.totalTasks, (item: string) = > {
        ToDoItem({ content: item })
      }, (item: string) = > JSON.stringify(item))
    }
    ...
  }
}

自定義子組件

在ToDoItem.ets文件中,顯示的文本內容為入參content,使用@State修飾參數isComplete來管理當前事項的完成狀態。當點擊當前ToDoItem時,觸發Row組件的onClick事件,更新isComplete的值,isComplete的改變將會刷新使用該狀態變量的UI組件。具體表現為:當前點擊的ToDoItem中,labelIcon圖片的替換、文本透明度opacity屬性的變化、文本裝飾線decoration的顯隱。

// ToDoItem.ets
...
@Component
export default struct ToDoItem {
  private content: string = '';
  @State isComplete: boolean = false;
  
 @Builder labelIcon(icon: Resource) {
    Image(icon)
      ...
  }

  build() {
    Row() {
      if (this.isComplete) {
        this.labelIcon($r('app.media.ic_ok'));
      } else {
        this.labelIcon($r('app.media.ic_default'));
      }
      Text(this.content)
        ...
        .opacity(this.isComplete ? CommonConstants.OPACITY_COMPLETED : CommonConstants.OPACITY_DEFAULT)
        .decoration({ type: this.isComplete ? TextDecorationType.LineThrough : TextDecorationType.None })
    }
    ...
    .onClick(() = > {
      this.isComplete = !this.isComplete;
    })
  }
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發板
    +關注

    關注

    25

    文章

    4504

    瀏覽量

    94454
  • 鴻蒙
    +關注

    關注

    55

    文章

    1763

    瀏覽量

    42153
  • HarmonyOS
    +關注

    關注

    79

    文章

    1875

    瀏覽量

    29333
  • OpenHarmony
    +關注

    關注

    23

    文章

    3375

    瀏覽量

    15194
收藏 人收藏

    評論

    相關推薦

    TL3588-視頻開發案

    TL3588-視頻開發案
    的頭像 發表于 01-24 16:29 ?412次閱讀
    TL3588-視頻<b class='flag-5'>開發案</b>例

    TLT507-Linux-RT應用開發案

    TLT507-Linux-RT應用開發案
    的頭像 發表于 01-26 09:46 ?392次閱讀
    TLT507-Linux-RT應用<b class='flag-5'>開發案</b>例

    TLT507-視頻開發案

    TLT507-視頻開發案
    的頭像 發表于 01-26 10:50 ?715次閱讀
    TLT507-視頻<b class='flag-5'>開發案</b>例

    HarmonyOS應用開發-UI設計開發與預覽

    `. 介紹通過智能表待辦應用開發,讓開發者了解智能表HarmonyOS應用開發的全流程,實現從工程創建到界面預覽全過程。使用HUAWEIDe
    發表于 09-23 17:51

    HarmonyOS IoT 硬件開發案例分享

    ``許思維老師HiSpark Wi-Fi IoT 開發案例分享:案例一:AHT20溫濕度傳感器開發、調試;案例二:oled屏驅動庫移植,調試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應用。 ``
    發表于 10-27 17:30

    許思維老師HarmonyOS IoT 硬件開發案例分享

    許思維老師HiSpark Wi-Fi IoT 開發案例分享:案例一:AHT20溫濕度傳感器開發、調試;案例二:oled屏驅動庫移植,調試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應用。
    發表于 10-28 13:40

    【潤和直播課預告@華為開發者學院】HarmonyOS設備開發基礎課程|HiSpark WiFi-IoT 智能小車套件開發案

    `【潤和直播課預告@華為開發者學院】HarmonyOS設備開發基礎課程|HiSparkWiFi-IoT 智能小車套件開發案例,3月18日(周四) 19:00-21:00,讓你的
    發表于 03-16 15:01

    Linux應用開發手冊之Python開發案

    本文檔涉及的開發案例位于產品資料“4-軟件資料\Demo\”路徑下的base-demos和python-demos目錄。base-demos目錄存放Linux常用開發案例,案例bin目錄存放
    發表于 05-11 10:21

    許思維老師HarmonyOS IoT硬件開發案例分享

    許思維老師HiSpark Wi-Fi IoT 開發案例分享:案例一:AHT20溫濕度傳感器開發、調試;案例二:oled屏驅動庫移植,調試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應用。
    發表于 10-29 10:39 ?39次下載
    許思維老師<b class='flag-5'>HarmonyOS</b> IoT硬件<b class='flag-5'>開發案</b>例分享

    數碼播放器的開發案

    數碼播放器的開發案例說明。
    發表于 05-19 11:07 ?6次下載

    華為開發者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發案

    2021華為開發者分論壇HarmonyOS學生公開課-OpenHarmony Codelabs開發案
    的頭像 發表于 10-24 11:25 ?1635次閱讀
    華為<b class='flag-5'>開發</b>者分論壇<b class='flag-5'>HarmonyOS</b>學生公開課-OpenHarmony Codelabs<b class='flag-5'>開發案</b>例

    構建低功耗數字化的Wi-Fi待辦事項列表

    電子發燒友網站提供《構建低功耗數字化的Wi-Fi待辦事項列表.zip》資料免費下載
    發表于 12-23 16:03 ?0次下載
    構建低功耗數字化的Wi-Fi<b class='flag-5'>待辦</b>事項<b class='flag-5'>列表</b>

    OpenHarmony上實現待辦事項功能

    列表的編輯模式用途十分廣泛,常見于待辦事項管理、文件管理、備忘錄的記錄管理等應用場景。
    的頭像 發表于 06-25 15:19 ?463次閱讀

    RK3568---NPU開發案

    RK3568---NPU開發案
    的頭像 發表于 01-19 13:50 ?358次閱讀
    RK3568---NPU<b class='flag-5'>開發案</b>例

    TL3588-物聯網模塊開發案

    TL3588-物聯網模塊開發案
    的頭像 發表于 01-24 11:51 ?312次閱讀
    TL3588-物聯網模塊<b class='flag-5'>開發案</b>例
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>