0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony自定義組件

ArkUI詳解 ? 來(lái)源:ArkUI詳解 ? 作者:ArkUI詳解 ? 2022-12-08 12:26 ? 次閱讀

自定義組件

@Builder

可通過(guò)@Builder裝飾器進(jìn)行描述,該裝飾器可以修飾一個(gè)函數(shù),此函數(shù)可以在build函數(shù)之外聲明,并在build函數(shù)中或其他@Builder修飾的函數(shù)中使用,從而實(shí)現(xiàn)在一個(gè)自定義組件內(nèi)快速生成多個(gè)布局內(nèi)容。

@BuilderParam

@BuilderParam裝飾器用于修飾自定義組件內(nèi)函數(shù)類(lèi)型的屬性(例如: @BuilderParam noParam: () => void),并且在初始化自定義組件時(shí)被@BuilderParam修飾的屬性必須賦值。

當(dāng)開(kāi)發(fā)者在自定義組件中添加一個(gè)點(diǎn)擊跳轉(zhuǎn)操作。若直接在組件內(nèi)嵌入事件方法,將會(huì)導(dǎo)致所有引入該自定義組件的地方均增加了該功能。為解決此問(wèn)題,引入了@BuilderParam裝飾器,此裝飾器修飾的屬性值可為@Builder裝飾的函數(shù),開(kāi)發(fā)者可在初始化自定義組件時(shí)對(duì)此屬性進(jìn)行賦值,為自定義組件增加特定的功能。

@Styles

ArkTS為了避免開(kāi)發(fā)者對(duì)重復(fù)樣式的設(shè)置,通過(guò)@Styles裝飾器可以將多個(gè)樣式設(shè)置提煉成一個(gè)方法,直接在組件聲明時(shí)調(diào)用,通過(guò)@Styles裝飾器可以快速定義并復(fù)用自定義樣式。當(dāng)前@Styles僅支持通用屬性。

@Styles function globalFancy () {
  .width(150)
  .height(100)
  .backgroundColor(Color.Pink)
}
?
Text('堅(jiān)果')
        .globalFancy()
        .fontSize(30)

@Extend

@Extend裝飾器將新的屬性方法添加到Text、Column、Button等內(nèi)置組件上,通過(guò)@Extend裝飾器可以快速地?cái)U(kuò)展原生組件。注意的是@Extend不能定義在自定義組件struct內(nèi)。

// xxx.ets
@Extend(Text) function fancy (fontSize: number) {
  .fontColor(Color.Red)
  .fontSize(fontSize)
  .fontStyle(FontStyle.Italic)
  .fontWeight(600)
}
?
Text("堅(jiān)果")
        .fancy(24)

@CustomDialog

@CustomDialog裝飾器用于裝飾自定義彈窗組件,使得彈窗可以動(dòng)態(tài)設(shè)置內(nèi)容及樣式。

?
@CustomDialog
struct DialogExample {
  controller: CustomDialogController
  action: () => void
?
  build() {
    Row() {
      Button('自定義dialog')
        .onClick(() => {
          this.controller.close()
          this.action()
        })
    }.padding(20)
  }
}
?
?
@Entry
@Component
struct AboutPage {
  @State message: string = 'Hello World'
  dialogController: CustomDialogController = new CustomDialogController({
    builder: DialogExample({ action: this.onAccept }),
    cancel: this.existDialog,
    autoCancel: true
  });
  onAccept() {
    console.info('onAccept');
  }
?
  existDialog() {
    console.info('Cancel dialog!');
  }
?
  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold) .onClick(() => {
          this.dialogController.open()
        })
      }
      .width('100%')
    }
    .height('100%')
  }
}

審核編輯:湯梓紅

聲明:本文內(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)注

    0

    文章

    2

    瀏覽量

    5996
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3722

    瀏覽量

    16317
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenHarmony應(yīng)用開(kāi)發(fā)之自定義彈窗

    以??橘子購(gòu)物??中一個(gè)應(yīng)用更新提示的彈窗介紹OpenHarmony自定義彈窗。 接口 自定義彈窗官方文檔:??自定義彈窗-彈窗-全局UI方法-
    發(fā)表于 09-06 14:40

    OpenHarmony自定義組件介紹

    一、創(chuàng)建自定義組件 在ArkUI中,UI顯示的內(nèi)容均為組件,由框架直接提供的稱(chēng)為系統(tǒng)組件,由開(kāi)發(fā)者定義的稱(chēng)為
    發(fā)表于 09-25 15:36

    OpenHarmony裝飾指定自定義組件:@BuilderParam裝飾器

    當(dāng)開(kāi)發(fā)者創(chuàng)建了自定義組件,并想對(duì)該組件添加特定功能時(shí),例如在自定義組件中添加一個(gè)點(diǎn)擊跳轉(zhuǎn)操作。若直接在
    發(fā)表于 09-27 16:02

    1602自定義字符

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

    鴻蒙上自定義組件的過(guò)程

    ?? 在實(shí)際開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到一些系統(tǒng)原有組件無(wú)法滿(mǎn)足的情況,而 HarmonyOS 提供了自定義組件的方式,我們使用自定義組件來(lái)滿(mǎn)
    的頭像 發(fā)表于 11-10 09:27 ?2901次閱讀
    鴻蒙上<b class='flag-5'>自定義</b><b class='flag-5'>組件</b>的過(guò)程

    自定義IconSwitch小組件

    項(xiàng)目介紹: 項(xiàng)目名稱(chēng):IconSwitch 所屬系列:openharmony的第三方組件適配移植 功能:自定義Switch小部件 項(xiàng)目移植狀態(tài):主功能完成 調(diào)用差異:無(wú) 開(kāi)發(fā)版本:sdk6
    發(fā)表于 03-18 13:52 ?1次下載

    OpenHarmony自定義組件:ClearableInput和Keyboard

    組件介紹: 本示例包含了兩個(gè)OpenHarmony自定義組件,一個(gè)是ClearableInput,另一個(gè)是Keyboard。 ClearableInput
    發(fā)表于 03-18 15:21 ?1次下載
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定義</b><b class='flag-5'>組件</b>:ClearableInput和Keyboard

    OpenHarmony自定義組件FlowImageLayout

    組件介紹 本示例是OpenHarmony自定義組件FlowImageLayout。 用于將一個(gè)圖片列表以瀑布流的形式顯示出來(lái)。 調(diào)用方法
    發(fā)表于 03-21 10:17 ?3次下載
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定義</b><b class='flag-5'>組件</b>FlowImageLayout

    OpenHarmony自定義組件圓形圖像案例

    圓形圖像
    發(fā)表于 03-22 11:29 ?1次下載

    OpenHarmony自定義組件ProgressWithText

    組件介紹 本示例是OpenHarmony自定義組件ProgressWithText。 在原來(lái)進(jìn)度條的上方加了一個(gè)文本框,動(dòng)態(tài)顯示當(dāng)前進(jìn)度并調(diào)整位置。 調(diào)用方法
    發(fā)表于 03-23 14:03 ?1次下載
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定義</b><b class='flag-5'>組件</b>ProgressWithText

    OpenHarmony自定義組件CircleProgress

    組件介紹 本示例是OpenHarmony自定義組件CircleProgress。 用于定義一個(gè)帶文字的圓形進(jìn)度條。 調(diào)用方法
    發(fā)表于 03-23 14:06 ?4次下載
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>自定義</b><b class='flag-5'>組件</b>CircleProgress

    三種自定義彈窗UI組件封裝的實(shí)現(xiàn)

    鴻蒙已經(jīng)提供了全局 UI 方法自定義彈窗,本文是基于基礎(chǔ)的自定義彈窗來(lái)實(shí)現(xiàn)提示消息彈窗、確認(rèn)彈窗、輸入彈窗的 UI 組件封裝。
    的頭像 發(fā)表于 03-30 09:28 ?3158次閱讀

    適用于鴻蒙的自定義組件框架Carbon案例教程

    項(xiàng)目名稱(chēng):Carbon 所屬系列:ohos的第三方組件適配移植 功能:一個(gè)適用于鴻蒙的自定義組件框架,幫助快速實(shí)現(xiàn)各種需要的效果 項(xiàng)目移植狀態(tài):大部分移植 調(diào)用差異:基本沒(méi)有使用差異,可以參照
    發(fā)表于 04-07 09:49 ?5次下載

    自定義視圖組件教程案例

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

    鴻蒙ArkUI實(shí)例:【自定義組件

    組件OpenHarmony 頁(yè)面最小顯示單元,一個(gè)頁(yè)面可由多個(gè)組件組合而成,也可只由一個(gè)組件組合而成,這些組件可以是ArkUI開(kāi)發(fā)框架自
    的頭像 發(fā)表于 04-08 10:17 ?642次閱讀