在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

HarmonyOS開發案例:【 自定義彈窗】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-16 18:18 ? 次閱讀

介紹

基于ArkTS的聲明式開發范式實現了三種不同的彈窗,第一種直接使用公共組件,后兩種使用CustomDialogController實現自定義彈窗,效果如圖所示:

相關概念

  • [AlertDialog]:警告彈窗,可設置文本內容和響應回調。
  • [CustomDialogController]:通過CustomDialogController類顯示自定義彈窗。

環境搭建

軟件要求

  • [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. 鴻蒙開發指導文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

代碼結構解讀

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

├──entry/src/main/ets               // 代碼區
│  ├──common
│  │  └──constants
│  │     └──StyleConstants.ets      // 抽離樣式
│  │  └──utils
│  │     └──Logger.ets              // 日志工具類
│  ├──entryability
│  │  └──EntryAbility.ts            // 程序入口類
│  ├──pages
│  │  └──DialogPage.ets	            // 主界面	
│  └──view
│     ├──CustomAlertDialog.ets      // 自定義彈窗組件
│     └──ConfirmDialog.ets          // 自定義彈窗組件
└──entry/src/main/resources         // 資源文件目錄

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

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

構建頁面

界面主要包括自定義彈窗以及公共組件警告彈窗兩部分,效果如圖所示:

公共彈窗組件

首先創建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)
      ...
  }
}

自定義彈窗

通過CustomDialogController的builder屬性設置自定義彈窗組件,調用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)
  }
}```**

審核編輯 黃宇

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

    關注

    57

    文章

    2352

    瀏覽量

    42858
  • HarmonyOS
    +關注

    關注

    79

    文章

    1975

    瀏覽量

    30194
  • OpenHarmony
    +關注

    關注

    25

    文章

    3722

    瀏覽量

    16317
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發實例:【自定義Emitter】

    使用[Emitter]實現事件的訂閱和發布,使用[自定義彈窗]設置廣告信息。
    的頭像 發表于 04-14 11:37 ?1002次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發</b>實例:【<b class='flag-5'>自定義</b>Emitter】

    HarmonyOS開發案例:【彈窗使用】

    基于dialog和button組件,實現彈窗的幾種自定義效果
    的頭像 發表于 04-25 17:44 ?1383次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【<b class='flag-5'>彈窗</b>使用】

    HarmonyOS開發案例:【多種樣式彈窗

    如何使用彈窗功能,實現四種類型彈窗。分別是:警告彈窗、自定義彈窗、日期滑動選擇器彈窗、文本滑動選
    的頭像 發表于 05-08 15:32 ?760次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【多種樣式<b class='flag-5'>彈窗</b>】

    講解一下HarmonyOS中的幾個自定義組件用到的知識

    HarmonyOS 的 Component 組件對外提供了一個 DrawTask 接口,通過 addDrawTask 方法為組件添加一個 DrawTask,讓開發者可以進行自定義繪制邏輯。首先我們
    發表于 03-16 16:05

    OpenHarmony應用開發自定義彈窗

    API參考-HarmonyOS應用開發?? CustomDialogController是自定義彈窗對應的接口,詳細介紹如下: CustomDialogController(valu
    發表于 09-06 14:40

    HarmonyOS Codelab 樣例 一彈窗基本使用

    dialog組件:自定義彈窗容器組件。 button組件:按鈕組件。 完整示例 gitee源碼地址 源碼下載 彈窗基本使用(JS).zip 二、環境搭建 我們首先需要完成HarmonyOS
    發表于 09-19 18:40

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據讀者的具體情況顯示自定義字符。
    發表于 01-20 15:43 ?1次下載

    鴻蒙上自定義組件的過程

    ?? 在實際開發過程中,我們經常會遇到一些系統原有組件無法滿足的情況,而 HarmonyOS 提供了自定義組件的方式,我們使用自定義組件來滿足項目需求。 ????
    的頭像 發表于 11-10 09:27 ?2901次閱讀
    鴻蒙上<b class='flag-5'>自定義</b>組件的過程

    HarmonyOS 中的幾個自定義控件介紹

    HarmonyOS 開發自定義組件目前還不是很豐富,在開發過程中常常會有一些特殊效果的組件,這就需要我們額外花一些時間實現。
    的頭像 發表于 01-04 13:49 ?2246次閱讀

    三種自定義彈窗UI組件封裝的實現

    鴻蒙已經提供了全局 UI 方法自定義彈窗,本文是基于基礎的自定義彈窗來實現提示消息彈窗、確認彈窗
    的頭像 發表于 03-30 09:28 ?3158次閱讀

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
    發表于 04-08 10:48 ?14次下載

    ArkUI如何自定義彈窗(eTS)

    自定義彈窗其實也是比較簡單的,通過CustomDialogController類就可以顯示自定義彈窗
    的頭像 發表于 08-31 08:24 ?2201次閱讀

    自定義算子開發

    一個完整的自定義算子應用過程包括注冊算子、算子實現、含自定義算子模型轉換和運行含自定義op模型四個階段。在大多數情況下,您的模型應該可以通過使用hb_mapper工具完成轉換并順利部署到地平線芯片上……
    的頭像 發表于 04-07 16:11 ?2811次閱讀
    <b class='flag-5'>自定義</b>算子<b class='flag-5'>開發</b>

    labview超快自定義控件制作和普通自定義控件制作

    labview超快自定義控件制作和普通自定義控件制作
    發表于 08-21 10:32 ?13次下載

    HarmonyOS開發案例:【UIAbility和自定義組件生命周期】

    本文檔主要描述了應用運行過程中UIAbility和自定義組件的生命周期。對于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對于頁面
    的頭像 發表于 05-10 15:31 ?1250次閱讀
    <b class='flag-5'>HarmonyOS</b><b class='flag-5'>開發案</b>例:【UIAbility和<b class='flag-5'>自定義</b>組件生命周期】
    主站蜘蛛池模板: 久久精品影视| 亚洲1卡二卡3卡四卡不卡| videos另类重口tv| 免费在线观看的网站| 日本一级高清不卡视频在线| 中文字幕一区二区三区乱码aⅴ| аⅴ天堂中文在线网| 欧美黑人xxxx猛牲大交| 久久精品亚洲热综合一本奇米| 一级毛片aaa片免费观看| 四虎永久在线精品2022| 久青草视频在线播放| av在线色| 久久国产精品岛国搬运工| 久久精品国产精品亚洲婷婷| 欧美高清在线播放| 成人小视频在线| 欧美一级特黄高清免费| 欧美在线性| 色综合天天综一个色天天综合网| 噜噜吧噜噜色| 午夜看片影院在线观看| 在线免费观看色片| 亚洲综合成人网在线观看| 国产一卡二卡≡卡四卡无人| 天天操夜夜爽| 中文字幕一区视频| 四虎精品久久| 国产 日韩 欧美 高清| 理论免费| 狠狠色噜噜狠狠狠狠98| 欧美性喷潮| 午夜神马嘿嘿| 97se狠狠狠狠狼亚洲综合网| 亚洲人成电影在线小说网色| 久久青青草原精品老司机| 手机看片自拍自自拍日韩免费| 又色又爽的视频| 日韩美女三级| 午夜在线一区| 亚洲精品二区中文字幕|