介紹
本篇Codelab主要基于dialog和button組件,實(shí)現(xiàn)彈窗的幾種自定義效果,具體效果有:
- 警告彈窗,點(diǎn)擊確認(rèn)按鈕彈窗關(guān)閉。
- 確認(rèn)彈窗,點(diǎn)擊取消按鈕或確認(rèn)按鈕,觸發(fā)對(duì)應(yīng)操作。
- 加載彈窗,展示加載中效果。
- 提示彈窗,支持用戶輸入內(nèi)容,點(diǎn)擊取消和確認(rèn)按鈕,觸發(fā)對(duì)應(yīng)操作。
- 進(jìn)度條彈窗,展示進(jìn)度條以及百分比。
相關(guān)概念
- [dialog組件]:自定義彈窗容器組件。
- [button組件]:按鈕組件。
環(huán)境搭建
軟件要求
- [DevEco Studio]版本:DevEco Studio 3.1 Release及以上版本。
- OpenHarmony SDK版本:API version 9及以上版本。
硬件要求
- 開發(fā)板類型:[潤(rùn)和RK3568開發(fā)板]。
- OpenHarmony系統(tǒng):3.2 Release及以上版本。
環(huán)境搭建
完成本篇Codelab我們首先要完成開發(fā)環(huán)境的搭建,本示例以RK3568開發(fā)板為例,參照以下步驟進(jìn)行:
- [獲取OpenHarmony系統(tǒng)版本]:標(biāo)準(zhǔn)系統(tǒng)解決方案(二進(jìn)制)。以3.2 Release版本為例:
- 搭建燒錄環(huán)境。
- [完成DevEco Device Tool的安裝]
- [完成RK3568開發(fā)板的燒錄]
- 搭建開發(fā)環(huán)境。
代碼結(jié)構(gòu)解讀
本篇Codelab只對(duì)核心代碼進(jìn)行講解,對(duì)于完整代碼,我們會(huì)在gitee中提供。
├──entry/src/main/js // 代碼區(qū)
│ └──MainAbility
│ ├──common
│ │ └──images // 圖片資源
│ ├──i18n // 國際化中英文
│ │ ├──en-US.json
│ │ └──zh-CN.json
│ ├──pages
│ │ └──index
│ │ ├──index.css // 頁面整體布局以及彈窗樣式
│ │ ├──index.hml // 自定義彈窗展示頁面
│ │ └──index.js // 彈窗顯示關(guān)閉邏輯以及動(dòng)畫邏輯
│ └──app.js // 程序入口
└──entry/src/main/resources // 應(yīng)用資源目錄
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
構(gòu)建界面
界面主要包括按鈕列表頁和自定義彈窗兩部分,我們可以通過在dialog標(biāo)簽中添加自定義組件設(shè)置彈窗,具體效果如圖所示:
首先搭建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中創(chuàng)建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 >
確認(rèn)彈窗(ConfirmDialog)
創(chuàng)建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)
創(chuàng)建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)
創(chuàng)建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 >
進(jìn)度條彈窗(ProgressDialog)
創(chuàng)建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中文件實(shí)現(xiàn)不同button的點(diǎn)擊事件,展示對(duì)應(yīng)彈窗:
// 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
+關(guān)注
關(guān)注
79文章
1983瀏覽量
30618 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3749瀏覽量
16638 -
鴻蒙OS
+關(guān)注
關(guān)注
0文章
190瀏覽量
4548
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
HarmonyOS開發(fā)案例:【 自定義彈窗】
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發(fā)案</b>例:【 自定義<b class='flag-5'>彈窗</b>】](https://file1.elecfans.com/web2/M00/DB/A2/wKgZomYrohiANIVrAC1lCoegR9s642.jpg)
HarmonyOS開發(fā)案例:【多種樣式彈窗】
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發(fā)案</b>例:【多種樣式<b class='flag-5'>彈窗</b>】](https://file1.elecfans.com//web2/M00/E2/E7/wKgaomY6F_OAW9WFAMv06wYNMn8192.jpg)
HarmonyOS實(shí)戰(zhàn)開發(fā)-全局彈窗封裝案例
HarmonyOS IoT 硬件開發(fā)案例分享
【潤(rùn)和直播課預(yù)告@華為開發(fā)者學(xué)院】HarmonyOS設(shè)備開發(fā)基礎(chǔ)課程|HiSpark WiFi-IoT 智能小車套件開發(fā)案例
HarmonyOS應(yīng)用開發(fā)-eTS-警告彈窗
HarmonyOS應(yīng)用開發(fā)-XPopup常用的彈窗體驗(yàn)
OpenHarmony應(yīng)用開發(fā)之自定義彈窗
HarmonyOS Codelab 樣例 一彈窗基本使用
許思維老師HarmonyOS IoT硬件開發(fā)案例分享
![許思維老師<b class='flag-5'>HarmonyOS</b> IoT硬件<b class='flag-5'>開發(fā)案</b>例分享](https://file.elecfans.com/web1/M00/CC/97/o4YBAF-aKPeAcD_CAAPXIjiUBjQ116.png)
華為開發(fā)者分論壇HarmonyOS學(xué)生公開課-OpenHarmony Codelabs開發(fā)案例
![華為<b class='flag-5'>開發(fā)</b>者分論壇<b class='flag-5'>HarmonyOS</b>學(xué)生公開課-OpenHarmony Codelabs<b class='flag-5'>開發(fā)案</b>例](https://file.elecfans.com/web2/M00/19/8E/pYYBAGF00USAR-78AAD-2dnL6jM191.jpg)
HarmonyOS開發(fā)指導(dǎo)類文檔更新速遞(上)
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發(fā)</b>指導(dǎo)類文檔更新速遞(上)](https://file1.elecfans.com/web3/M00/04/40/wKgZO2dx_LOAWlAWAAAWeXs0Vf4670.jpg)
評(píng)論