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

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

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

3天內不再提示

深入淺出學習eTs之電量不足提示彈窗實例

Harmony&嵌入式學習 ? 來源:Harmony&嵌入式學習 ? 作者:Harmony&嵌入式學 ? 2023-05-13 13:25 ? 次閱讀

本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)

一、需求分析

wKgaomRfHz-AWHurAAJmQsDI0GA789.png

相信大家生活中也經常會遇到上方情況,本章節我們來模擬提示一個電量不足的顯示,使用自定義彈窗來實現

提示電量不足

可以選擇關閉和低電量模式

顯示當前剩余電量

二、控件介紹

自定義彈窗:官方文檔

說明: 從API Version 7開始支持。后續版本如有新增內容,則采用上角標單獨標記該內容的起始版本。

通過CustomDialogController類顯示自定義彈窗。

接口

CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean, alignment?: DialogAlignment, offset?: Offset, customStyle?: boolean})

參數

參數名 參數類型 必填 默認值 參數描述
builder CustomDialog - 自定義彈窗內容構造器。
cancel () => void - 點擊遮障層退出時的回調。
autoCancel boolean true 是否允許點擊遮障層退出。
alignment DialogAlignment DialogAlignment.Default 彈窗在豎直方向上的對齊方式。
offset { dx: Length | Resource, dy: Length | Resource } - 彈窗相對alignment所在位置的偏移量。
customStyle boolean false 彈窗容器樣式是否自定義。
gridCount8+ number - 彈窗寬度占柵格寬度的個數。

DialogAlignment枚舉說明

名稱 描述
Top 垂直頂部對齊。
Center 垂直居中對齊。
Bottom 垂直底部對齊。
Default 默認對齊。
TopStart8+ 左上對齊。
TopEnd8+ 右上對齊。
CenterStart8+ 左中對齊。
CenterEnd8+ 右中對齊。
BottomStart8+ 左下對齊。
BottomEnd8+ 右下對齊。

代碼介紹:

declare class CustomDialogController {
  constructor(value: CustomDialogControllerOptions); // 對話框控制器,控制彈框樣式等
  open();                                            // 打開對話框
  close();                                           // 關閉對話框
}

// 配置參數的定義
declare interface CustomDialogControllerOptions {
  builder: any;                                      // 彈框構造器
  cancel?: () => void;                               // 點擊蒙層的事件回調
  autoCancel?: boolean;                              // 點擊蒙層是否自動消失
  alignment?: DialogAlignment;                       // 彈框在豎直方向上的對齊方式
  offset?: Offset;                                   // 根據alignment的偏移
  customStyle?: boolean;                             // 是否是自定義樣式
  gridCount?: number;                                // grid數量
}

CustomDialogController

導入對象

dialogController : CustomDialogController = new CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean})

open()

open(): void

顯示自定義彈窗內容,若已顯示,則不生效。

close

close(): void

關閉顯示的自定義彈窗,若已關閉,則不生效。

三、UI設計

(1)彈窗實現

本章節的UI設計特別簡單,僅需要實現一個彈窗即可

開介紹,我們需要在@Entry外進行定義,定義類型是@CustomDialog,其基本結構如下(官網)

@CustomDialog
struct CustomDialogExample {
  controller: CustomDialogController
  cancel: () => void
  confirm: () => void

  build() {
    Column() {
      Text('Software uninstall').width('70%').fontSize(20).margin({ top: 10, bottom: 10 })
      Image($r('app.media.icon')).width(80).height(80)
      Text('Whether to uninstall a software?').fontSize(16).margin({ bottom: 10 })
      Flex({ justifyContent: FlexAlign.SpaceAround }) {
        Button('cancel')
          .onClick(() => {
            this.controller.close()
            this.cancel()
          }).backgroundColor(0xffffff).fontColor(Color.Black)
        Button('confirm')
          .onClick(() => {
            this.controller.close()
            this.confirm()
          }).backgroundColor(0xffffff).fontColor(Color.Red)
      }.margin({ bottom: 10 })
    }
  }
}

通過上面的程序可以實現下面的效果

wKgZomRfHz-Abk_WAAZeSwTl3AM866.gif

我們需要對內容和格式進行修改

@CustomDialog
struct CustomBatteryDialog  {
  controller: CustomDialogController
  cancel: () => void
  confirm: () => void

  build() {
    Stack() {
      Column() {
        Text('電池電量不足')
          .fontSize(22)
          .margin({top: 15})
          .fontColor(Color.Black)
        Text('還剩20%電量')
          .fontSize(17)
          .margin({top: 15})
          .fontColor(Color.Red)
        Text()
          .size({width: "100%", height: "2px"})
          .backgroundColor("#bebbc1")
          .margin({top: 15})
        Row() {
          Text("關閉")
            .height("100%")
            .layoutWeight(1)
            .textAlign(TextAlign.Center)
            .fontSize(20)
            .fontColor("#317ef5")
            .onClick(() => {
              this.controller.close(); // 關閉彈窗
            })
          Text()
            .size({width: "2px", height: "100%"})
            .backgroundColor("#bebbc1")
          Text("低電量模式")
            .textAlign(TextAlign.Center)
            .fontSize(20)
            .fontColor("#317ef5")
            .height("100%")
            .layoutWeight(1)
            .onClick(() => {
              this.controller.close(); // 關閉彈窗
            })
        }
        .height(45)
        .width('100%')
      }
      .backgroundColor("#e6ffffff")
      .borderRadius(20)
    }
    .padding({left: 40, right: 40})
    .width("100%")
  }
}

實現效果如下:

wKgaomRfH0CABhXaAABA8VSXUfw733.png

(2)彈窗調用

彈窗調用的函數為this.controller.open(),一般是通過給定事件,像點擊按鈕或者之類,我們這里選擇使用直接彈窗的形式(打開APP就彈窗)

使用到函數為onPageShow(),其位置在該位置:

@Entry 
@Component 
struct Index {

  onPageShow() {
    this.controller.open()

  }

  build() {

  }
}

四、系統演示

wKgZomRfH0CAYKHeAAGNHenO-TQ540.gif

已實現效果,如上圖所示。

編輯:黃飛

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

    關注

    0

    文章

    20

    瀏覽量

    1652
  • OpenHarmony
    +關注

    關注

    25

    文章

    3753

    瀏覽量

    16698
收藏 人收藏

    評論

    相關推薦

    #深入淺出學習eTs#(八)“猜大小”小游戲

    本項目Gitee倉地址:[深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發表于 05-17 15:08 ?1091次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>#(八)“猜大小”小游戲

    #深入淺出學習eTs#(十)藍藥丸還是紅藥丸

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發表于 05-17 15:07 ?1015次閱讀
    #<b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>#(十)藍藥丸還是紅藥丸

    ARM7 深入淺出學習

    深入淺出ARM7 LPC213x_214 學習
    發表于 12-04 17:28

    深入淺出排序學習使用指南

    深入淺出排序學習:寫給程序員的算法系統開發實踐
    發表于 09-16 11:38

    #深入淺出學習eTs#(一)模擬器/真機環境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    發表于 12-24 13:02

    #深入淺出學習eTs#(二)拖拽式UI

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發表于 12-29 09:56

    #深入淺出學習eTs#(七)判斷密碼是否正確

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發表于 12-29 10:06

    #深入淺出學習eTs#(十二)您的電量不足

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)一
    發表于 12-29 13:50

    深入淺出Cortex-M0學習資料

    深入淺出Cortex-M0學習資料
    發表于 06-18 10:50 ?0次下載
    <b class='flag-5'>深入淺出</b>Cortex-M0<b class='flag-5'>學習</b>資料

    STM32深入淺出新手篇

    STM32深入淺出新手篇,很好的單片機學習資料。
    發表于 03-21 17:43 ?128次下載

    深入淺出學習250個通信原理資源下載

    深入淺出學習250個通信原理資源下載
    發表于 04-12 09:16 ?28次下載

    深入淺出學習低功耗藍牙協議棧

    深入淺出學習低功耗藍牙協議棧
    發表于 06-23 10:35 ?57次下載

    深入淺出學習eTs(一)模擬器/真機環境搭建

    本項目的Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com
    的頭像 發表于 05-13 13:17 ?1794次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(一)模擬器/真機環境搭建

    深入淺出學習eTs(七)如何判斷密碼是否正確

    本項目Gitee倉地址: 深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發表于 05-13 13:20 ?972次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b>(七)如何判斷密碼是否正確

    深入淺出學習eTs九宮格密碼鎖功能實現

    本項目Gitee倉地址:深入淺出eTs學習: 帶大家深入淺出學習eTs (gitee.com)
    的頭像 發表于 05-13 13:25 ?1687次閱讀
    <b class='flag-5'>深入淺出</b><b class='flag-5'>學習</b><b class='flag-5'>eTs</b><b class='flag-5'>之</b>九宮格密碼鎖功能實現
    主站蜘蛛池模板: 狠狠操狠狠操 | 宅男69免费永久网站 | ts人妖在线观看 | 久草男人天堂 | 岛国三级在线看 | 免费精品美女久久久久久久久 | 午夜视频免费在线观看 | 91精品啪国产在线观看免费牛牛 | 亚洲视频在线一区 | 日本亚洲精品色婷婷在线影院 | 狠狠色噜噜狠狠狠97影音先锋 | 啪啪免费网站 | 男人日女人视频免费看 | 国产综合久久久久影院 | 亚洲国产成人在人网站天堂 | 午夜影院普通 | 免费人成在线观看网站品爱网日本 | 特级片在线观看 | 免费一级毛片女人图片 | 国产免费人成在线视频视频 | 天天操天天爽天天射 | 九九热在线免费视频 | 免费看污视频软件 | 人人搞人人干 | 天堂网最新版中文 | 美女视频黄a全部免费看小说 | 玖玖在线| 插插操操 | 69japanese日本100 69ww免费视频播放器 | 最色网站 | 男人在线资源 | 一级特级aaa毛片 | 欧美成人区 | 国模沟沟一区二区三区 | 天天视频国产免费入口 | 都市激情亚洲综合 | 国产xxxxxx久色视频在 | 天天操夜夜嗨 | 黄色四虎影院 | 日本操穴 | 免看一级a毛片一片成人不卡 |