介紹
本篇Codelab主要基于dialog和button組件,實現彈窗的幾種自定義效果,具體效果有:
- 警告彈窗,點擊確認按鈕彈窗關閉。
- 確認彈窗,點擊取消按鈕或確認按鈕,觸發對應操作。
- 加載彈窗,展示加載中效果。
- 提示彈窗,支持用戶輸入內容,點擊取消和確認按鈕,觸發對應操作。
- 進度條彈窗,展示進度條以及百分比。

相關概念
- [dialog組件]:自定義彈窗容器組件。
- [button組件]:按鈕組件。
環境搭建
軟件要求
- [DevEco Studio]版本:DevEco Studio 3.1 Release及以上版本。
- OpenHarmony SDK版本:API version 9及以上版本。
硬件要求
- 開發板類型:[潤和RK3568開發板]。
- OpenHarmony系統:3.2 Release及以上版本。
環境搭建
完成本篇Codelab我們首先要完成開發環境的搭建,本示例以RK3568開發板為例,參照以下步驟進行:
- [獲取OpenHarmony系統版本]:標準系統解決方案(二進制)。以3.2 Release版本為例:

- 搭建燒錄環境。
- [完成DevEco Device Tool的安裝]
- [完成RK3568開發板的燒錄]
- 搭建開發環境。
代碼結構解讀
本篇Codelab只對核心代碼進行講解,對于完整代碼,我們會在gitee中提供。
├──entry/src/main/js // 代碼區
│ └──MainAbility
│ ├──common
│ │ └──images // 圖片資源
│ ├──i18n // 國際化中英文
│ │ ├──en-US.json
│ │ └──zh-CN.json
│ ├──pages
│ │ └──index
│ │ ├──index.css // 頁面整體布局以及彈窗樣式
│ │ ├──index.hml // 自定義彈窗展示頁面
│ │ └──index.js // 彈窗顯示關閉邏輯以及動畫邏輯
│ └──app.js // 程序入口
└──entry/src/main/resources // 應用資源目錄
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

構建界面
界面主要包括按鈕列表頁和自定義彈窗兩部分,我們可以通過在dialog標簽中添加自定義組件設置彈窗,具體效果如圖所示:

首先搭建index.hml中的按鈕頁,主要包括5種常見的彈窗,分別為AlertDialog、ConfirmDialog、LoadingDialog、PromptDialog以及ProgressDialog。
< !--index.hml-- >
< div class="btn-div" >
< button type="capsule" value="AlertDialog" class="btn" onclick="showAlert" >< /button >
< button type="capsule" value="ConfirmDialog" class="btn" onclick="showConfirm" >< /button >
< button type="capsule" value="LoadingDialog" class="btn" onclick="showLoading" >< /button >
< button type="capsule" value="PromptDialog" class="btn" onclick="showPrompt" >< /button >
< button type="capsule" value="ProgressDialog" class="btn" onclick="showProgress" >< /button >
< /div >
警告彈窗(AlertDialog)
然后在index.hml中創建AlertDialog自定義彈窗,效果如圖所示:

< !-- index.hml -- >
< !-- AlertDialog自定義彈窗 -- >
< dialog id="alertDialog" class="alert-dialog" >
< div class="dialog-div" >
< div class="alert-inner-txt" >
< text class="txt" >AlertDialog< /text >
< /div >
< div class="alert-inner-btn" >
< button class="btn-single" type="capsule" value="Confirm" onclick="confirmClick('alertDialog')" >
< /button >
< /div >
< /div >
< /dialog >
確認彈窗(ConfirmDialog)
創建ConfirmDialog自定義彈窗,效果如圖所示:

< !-- index.hml -- >
< !-- ConfirmDialog自定義彈窗 -- >
< dialog id="confirmDialog" class="dialog-main" >
< div class="dialog-div" >
< div class="inner-txt" >
< text class="txt" >ConfirmDialog< /text >
< /div >
< div class="inner-btn" >
< button type="capsule" value="Cancel" class="btn-txt-left" onclick="cancelClick('confirmDialog')" >
< /button >
< button type="capsule" value="Confirm" class="btn-txt-right" onclick="confirmClick('confirmDialog')" >
< /button >
< /div >
< /div >
< /dialog >
加載彈窗(LoadingDialog)
創建LoadingDialog自定義彈窗,效果如圖所示:

< !-- index.hml -- >
< !-- LoadingDialog自定義彈窗 -- >
< dialog id="loadingDialog" class="low-height-dialog" >
< div class="dialog-loading" >
< text >Loading...< /text >
< image class="loading-img img-rotate" id="loading-img" src="/common/images/ic_loading.svg" >< /image >
< /div >
< /dialog >
提示彈窗(PromptDialog)
創建PromptDialog自定義彈窗,效果如圖所示:

< !-- index.hml -- >
< !-- PromptDialog自定義彈窗 -- >
< dialog id="promptDialog" class="dialog-prompt" >
< div class="dialog-div-prompt" >
< div class="inner-txt-prompt" >
< text class="txt" >PromptDialog< /text >
< /div >
< input class="prompt-input" type="password" placeholder="please enter password" >
< /input >
< div class="inner-btn" >
< button type="capsule" value="Cancel" class="btn-txt-left" onclick="cancelClick('promptDialog')" >
< /button >
< button type="capsule" value="Confirm" class="btn-txt-right" onclick="confirmClick('promptDialog')" >
< /button >
< /div >
< /div >
< /dialog >
進度條彈窗(ProgressDialog)
創建ProgressDialog自定義彈窗,效果如圖所示:

< !-- index.hml -- >
< !-- ProgressDialog自定義彈窗 -- >
< dialog id="progressDialog" class="low-height-dialog" oncancel="onCancel" >
< div class="dialog-progress-div" >
< div class="inner-txt-progress" >
< text class="download-txt" >Downloading...< /text >
< text >{{ percent + '%' }}< /text >
< /div >
< div class="progress-div" >
< progress class="min-progress" type="horizontal" percent="{{ percent }}" secondarypercent="50" >
< /progress >
< /div >
< /div >
< /dialog >
然后在index.js中文件實現不同button的點擊事件,展示對應彈窗:
// index.js
export default {
data: {...},
// 展示AlertDialog
showAlert() {
this.$element('alertDialog').show();
},
// 展示ConfirmDialog
showConfirm() {
this.$element('confirmDialog').show();
},
// 展示LoadingDialog
showLoading() {
...
this.animation = this.$element('loading-img').animate(frames, options);
this.animation.play();
this.$element('loadingDialog').show();
},
// 展示PromptDialog
showPrompt() {
this.$element('promptDialog').show();
},
// 展示ProgressDialog
showProgress() {
...
}
}
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
HarmonyOS
+關注
關注
80文章
2153瀏覽量
36041 -
OpenHarmony
+關注
關注
33文章
3952瀏覽量
21096 -
鴻蒙OS
+關注
關注
0文章
193瀏覽量
5482
發布評論請先 登錄
相關推薦
熱點推薦
HarmonyOS實戰開發-全局彈窗封裝案例
介紹
本示例介紹兩種彈窗的封裝案例。一種是自定義彈窗封裝成自定義組件的方式,使用一句代碼即可控制顯示;一種是使用子窗口的方式實現彈窗,使用一句代碼即可展示。
效果預覽圖
使用說明
進入首頁會立馬
發表于 05-08 15:51
HarmonyOS IoT 硬件開發案例分享
``許思維老師HiSpark Wi-Fi IoT 開發案例分享:案例一:AHT20溫濕度傳感器開發、調試;案例二:oled屏驅動庫移植,調試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應用。 ``
發表于 10-27 17:30
【潤和直播課預告@華為開發者學院】HarmonyOS設備開發基礎課程|HiSpark WiFi-IoT 智能小車套件開發案例
`【潤和直播課預告@華為開發者學院】HarmonyOS設備開發基礎課程|HiSparkWiFi-IoT 智能小車套件開發案例,3月18日(周四) 19:00-21:00,讓你的
發表于 03-16 15:01
HarmonyOS應用開發-eTS-警告彈窗
顯示警告彈窗組件,可設置文本內容與響應回調。屬性:名稱參數類型默認值參數描述showoptions: { paramObject1| paramObject2}-定義并顯示AlertDialog組
發表于 12-22 14:16
HarmonyOS應用開發-XPopup常用的彈窗體驗
組件名:XPopup作用:內置幾種了常用的彈窗,十幾種良好的動畫,將彈窗和動畫的自定義設計的極其簡單;目前還沒有出現XPopup實現不了的彈窗效果。 內置彈窗允許你使用項目已有的布局,
發表于 05-21 11:18
OpenHarmony應用開發之自定義彈窗
API參考-HarmonyOS應用開發??
CustomDialogController是自定義彈窗對應的接口,詳細介紹如下:
CustomDialogController(value
發表于 09-06 14:40
HarmonyOS Codelab 樣例 一彈窗基本使用
dialog組件:自定義彈窗容器組件。
button組件:按鈕組件。
完整示例
gitee源碼地址
源碼下載
彈窗基本使用(JS).zip
二、環境搭建
我們首先需要完成HarmonyOS
發表于 09-19 18:40
許思維老師HarmonyOS IoT硬件開發案例分享
許思維老師HiSpark Wi-Fi IoT 開發案例分享:案例一:AHT20溫濕度傳感器開發、調試;案例二:oled屏驅動庫移植,調試;案例三:用OLED屏播放視頻,Wi-Fi 和 TCP/IP 綜合應用。
發表于 10-29 10:39
?39次下載
HarmonyOS開發指導類文檔更新速遞(上)
伴隨著HarmonyOS 5.0.0 Release版本的發布,HarmonyOS官網文檔也帶來了不少上新內容。本期HarmonyOS NEXT開發者資料直通車將從文檔更新角度為
HarmonyOS開發案例:【彈窗使用】
評論