介紹
基于ArkTS的聲明式開(kāi)發(fā)范式實(shí)現(xiàn)了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實(shí)現(xiàn)自定義彈窗,效果如圖所示:

相關(guān)概念
- [AlertDialog]:警告彈窗,可設(shè)置文本內(nèi)容和響應(yīng)回調(diào)。
- [CustomDialogController]:通過(guò)CustomDialogController類(lèi)顯示自定義彈窗。
環(huán)境搭建
軟件要求
- [DevEco Studio]版本:DevEco Studio 3.1 Release。
- OpenHarmony SDK版本:API version 9。
硬件要求
- 開(kāi)發(fā)板類(lèi)型:[潤(rùn)和RK3568開(kāi)發(fā)板]。
- OpenHarmony系統(tǒng):3.2 Release。
環(huán)境搭建
完成本篇Codelab我們首先要完成開(kāi)發(fā)環(huán)境的搭建,本示例以RK3568開(kāi)發(fā)板為例,參照以下步驟進(jìn)行:
- [獲取OpenHarmony系統(tǒng)版本]:標(biāo)準(zhǔn)系統(tǒng)解決方案(二進(jìn)制)。以3.2 Release版本為例:

- 搭建燒錄環(huán)境。
- [完成DevEco Device Tool的安裝]
- [完成RK3568開(kāi)發(fā)板的燒錄](méi)
- 搭建開(kāi)發(fā)環(huán)境。
代碼結(jié)構(gòu)解讀
本篇Codelab只對(duì)核心代碼進(jìn)行講解,對(duì)于完整代碼,我們會(huì)在gitee中提供。
├──entry/src/main/ets // 代碼區(qū)
│ ├──common
│ │ └──constants
│ │ └──StyleConstants.ets // 抽離樣式
│ │ └──utils
│ │ └──Logger.ets // 日志工具類(lèi)
│ ├──entryability
│ │ └──EntryAbility.ts // 程序入口類(lèi)
│ ├──pages
│ │ └──DialogPage.ets // 主界面
│ └──view
│ ├──CustomAlertDialog.ets // 自定義彈窗組件
│ └──ConfirmDialog.ets // 自定義彈窗組件
└──entry/src/main/resources // 資源文件目錄
`HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

構(gòu)建頁(yè)面
界面主要包括自定義彈窗以及公共組件警告彈窗兩部分,效果如圖所示:

公共彈窗組件
首先創(chuàng)建DialogPage.ets作為主界面,公共彈窗組件直接使用AlertDialog的show方法拉起,效果如圖所示:

// DialogPage.ets
@Entry
@Component
struct DialogPage {
...
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Button($r('app.string.one_button_dialog'))
.onClick(() = > {
AlertDialog.show(
{
message: $r('app.string.dialog_message'),
offset: { dx: $r('app.float.dialog_offset_x'), dy: $r('app.float.dialog_offset_y') },
alignment: DialogAlignment.Bottom,
confirm: {
value: $r('app.string.confirm_txt'),
action: () = > {
Logger.info('Button clicking callback');
}
},
cancel: () = > {
Logger.info('Closed callbacks');
}
}
);
})
.height(StyleConstants.BUTTON_HEIGHT)
.width(StyleConstants.BUTTON_WIDTH)
...
}
}
自定義彈窗
通過(guò)CustomDialogController的builder屬性設(shè)置自定義彈窗組件,調(diào)用open方法拉起彈窗,效果如圖所示:

// DialogPage.ets
@Entry
@Component
struct DialogPage {
dialogControllerExample: CustomDialogController = new CustomDialogController({
builder: ConfirmDialog({ cancel: this.onCancel, confirm: this.onAccept }),
cancel: this.existApp,
autoCancel: true,
alignment: DialogAlignment.Bottom,
customStyle: true,
offset: { dx: $r('app.float.dialog_offset_x'), dy: $r('app.float.dialog_offset_y') }
});
dialogControllerAlert: CustomDialogController = new CustomDialogController({
builder: CustomAlertDialog({ cancel: this.onCancel, confirm: this.onAccept }),
cancel: this.existApp,
autoCancel: true,
alignment: DialogAlignment.Bottom,
customStyle: true,
offset: { dx: $r('app.float.dialog_offset_x'), dy: $r('app.float.dialog_offset_y') }
});
...
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
...
Button($r('app.string.two_button_dialog'))
.onClick(() = > {
this.dialogControllerAlert.open();
})
.margin({ top: $r('app.float.button_margin_top') })
.height(StyleConstants.BUTTON_HEIGHT)
.width(StyleConstants.BUTTON_WIDTH)
Button($r('app.string.customization_dialog'))
.onClick(() = > {
this.dialogControllerExample.open();
})
.margin({ top: $r('app.float.button_margin_top') })
.height(StyleConstants.BUTTON_HEIGHT)
.width(StyleConstants.BUTTON_WIDTH)
}
.width(StyleConstants.FULL_PERCENT)
.height(StyleConstants.FULL_PERCENT)
}
}```**
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
鴻蒙
+關(guān)注
關(guān)注
60文章
3031瀏覽量
46191 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2157瀏覽量
36304 -
OpenHarmony
+關(guān)注
關(guān)注
33文章
3977瀏覽量
21373
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
HarmonyOS開(kāi)發(fā)案例:【多種樣式彈窗】
如何使用彈窗功能,實(shí)現(xiàn)四種類(lèi)型彈窗。分別是:警告彈窗、自定義彈窗、日期滑動(dòng)選擇器彈窗、文本滑動(dòng)選
HarmonyOS應(yīng)用自定義鍵盤(pán)解決方案
自定義鍵盤(pán)是一種替換系統(tǒng)默認(rèn)鍵盤(pán)的解決方案,可實(shí)現(xiàn)鍵盤(pán)個(gè)性化交互。允許用戶(hù)結(jié)合業(yè)務(wù)需求與操作習(xí)慣,對(duì)按鍵布局進(jìn)行可視化重構(gòu)、設(shè)置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護(hù)層面,自定義鍵盤(pán)可以
講解一下HarmonyOS中的幾個(gè)自定義組件用到的知識(shí)
HarmonyOS 的 Component 組件對(duì)外提供了一個(gè) DrawTask 接口,通過(guò) addDrawTask 方法為組件添加一個(gè) DrawTask,讓開(kāi)發(fā)者可以進(jìn)行自定義繪制邏輯。首先我們
發(fā)表于 03-16 16:05
OpenHarmony應(yīng)用開(kāi)發(fā)之自定義彈窗
API參考-HarmonyOS應(yīng)用開(kāi)發(fā)??
CustomDialogController是自定義彈窗對(duì)應(yīng)的接口,詳細(xì)介紹如下:
CustomDialogController(valu
發(fā)表于 09-06 14:40
HarmonyOS Codelab 樣例 一彈窗基本使用
dialog組件:自定義彈窗容器組件。
button組件:按鈕組件。
完整示例
gitee源碼地址
源碼下載
彈窗基本使用(JS).zip
二、環(huán)境搭建
我們首先需要完成HarmonyOS
發(fā)表于 09-19 18:40
鴻蒙上自定義組件的過(guò)程
?? 在實(shí)際開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到一些系統(tǒng)原有組件無(wú)法滿(mǎn)足的情況,而 HarmonyOS 提供了自定義組件的方式,我們使用自定義組件來(lái)滿(mǎn)足項(xiàng)目需求。 ????
HarmonyOS 中的幾個(gè)自定義控件介紹
HarmonyOS 開(kāi)發(fā)自定義組件目前還不是很豐富,在開(kāi)發(fā)過(guò)程中常常會(huì)有一些特殊效果的組件,這就需要我們額外花一些時(shí)間實(shí)現(xiàn)。
三種自定義彈窗UI組件封裝的實(shí)現(xiàn)
鴻蒙已經(jīng)提供了全局 UI 方法自定義彈窗,本文是基于基礎(chǔ)的自定義彈窗來(lái)實(shí)現(xiàn)提示消息彈窗、確認(rèn)彈窗
自定義視圖組件教程案例
自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
發(fā)表于 04-08 10:48
?15次下載
ArkUI如何自定義彈窗(eTS)
自定義彈窗其實(shí)也是比較簡(jiǎn)單的,通過(guò)CustomDialogController類(lèi)就可以顯示自定義彈窗。
自定義算子開(kāi)發(fā)
一個(gè)完整的自定義算子應(yīng)用過(guò)程包括注冊(cè)算子、算子實(shí)現(xiàn)、含自定義算子模型轉(zhuǎn)換和運(yùn)行含自定義op模型四個(gè)階段。在大多數(shù)情況下,您的模型應(yīng)該可以通過(guò)使用hb_mapper工具完成轉(zhuǎn)換并順利部署到地平線芯片上……
HarmonyOS開(kāi)發(fā)案例:【UIAbility和自定義組件生命周期】
本文檔主要描述了應(yīng)用運(yùn)行過(guò)程中UIAbility和自定義組件的生命周期。對(duì)于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對(duì)于頁(yè)面
HarmonyOS開(kāi)發(fā)案例:【 自定義彈窗】
評(píng)論