国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(基本語法 五)

這篇具有很好參考價值的文章主要介紹了HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(基本語法 五)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

@Styles裝飾器:定義組件重用樣式

如果每個組件的樣式都需要單獨設(shè)置,在開發(fā)過程中會出現(xiàn)大量代碼在進(jìn)行重復(fù)樣式設(shè)置,雖然可以復(fù)制粘貼,但為了代碼簡潔性和后續(xù)方便維護(hù),我們推出了可以提煉公共樣式進(jìn)行復(fù)用的裝飾器@Styles。

@Styles裝飾器可以將多條樣式設(shè)置提煉成一個方法,直接在組件聲明的位置調(diào)用。通過@Styles裝飾器可以快速定義并復(fù)用自定義樣式。用于快速定義并復(fù)用自定義樣式。

裝飾器使用說明

  • 當(dāng)前@Styles僅支持通用屬性和通用事件。
  • @Styles方法不支持參數(shù),反例如下。
// 反例: @Styles不支持參數(shù)
@Styles function globalFancy (value: number) {
  .width(value)
}
  • @Styles可以定義在組件內(nèi)或全局,在全局定義時需在方法名前面添加function關(guān)鍵字,組件內(nèi)定義時則不需要添加function關(guān)鍵字。
// 全局
@Styles function functionName() { ... }

// 在組件內(nèi)
@Component
struct FancyUse {
  @Styles fancy() {
    .height(100)
  }
}
  • 定義在組件內(nèi)的@Styles可以通過this訪問組件的常量和狀態(tài)變量,并可以在@Styles里通過事件來改變狀態(tài)變量的值,示例如下:
@Component
struct FancyUse {
  @State heightVlaue: number = 100
  @Styles fancy() {
    .height(this.heightVlaue)
    .backgroundColor(Color.Yellow)
    .onClick(() => {
      this.heightVlaue = 200
    })
  }
}
  • 組件內(nèi)@Styles的優(yōu)先級高于全局@Styles。

    框架優(yōu)先找當(dāng)前組件內(nèi)的@Styles,如果找不到,則會全局查找。

使用場景

以下示例中演示了組件內(nèi)@Styles和全局@Styles的用法。

// 定義在全局的@Styles封裝的樣式
@Styles function globalFancy  () {
  .width(150)
  .height(100)
  .backgroundColor(Color.Pink)
}

@Entry
@Component
struct FancyUse {
  @State heightVlaue: number = 100
  // 定義在組件內(nèi)的@Styles封裝的樣式
  @Styles fancy() {
    .width(200)
    .height(this.heightVlaue)
    .backgroundColor(Color.Yellow)
    .onClick(() => {
      this.heightVlaue = 200
    })
  }

  build() {
    Column({ space: 10 }) {
      // 使用全局的@Styles封裝的樣式
      Text('FancyA')
        .globalFancy ()
        .fontSize(30)
      // 使用組件內(nèi)的@Styles封裝的樣式
      Text('FancyB')
        .fancy()
        .fontSize(30)
    }
  }
}

@Extend裝飾器:定義擴(kuò)展組件樣式

在前文的示例中,可以使用@Styles用于樣式的擴(kuò)展,在@Styles的基礎(chǔ)上,我們提供了@Extend,用于擴(kuò)展原生組件樣式。

語法

@Extend(UIComponentName) function functionName { ... }

用規(guī)則

  • 和@Styles不同,@Extend僅支持定義在全局,不支持在組件內(nèi)部定義。
  • 和@Styles不同,@Extend支持封裝指定的組件的私有屬性和私有事件和預(yù)定義相同組件的@Extend的方法。
// @Extend(Text)可以支持Text的私有屬性fontColor
@Extend(Text) function fancy () {
  .fontColor(Color.Red)
}
// superFancyText可以調(diào)用預(yù)定義的fancy
@Extend(Text) function superFancyText(size:number) {
    .fontSize(size)
    .fancy()
}
  • 和@Styles不同,@Extend裝飾的方法支持參數(shù),開發(fā)者可以在調(diào)用時傳遞參數(shù),調(diào)用遵循TS方法傳值調(diào)用。
// xxx.ets
@Extend(Text) function fancy (fontSize: number) {
  .fontColor(Color.Red)
  .fontSize(fontSize)
}

@Entry
@Component
struct FancyUse {
  build() {
    Row({ space: 10 }) {
      Text('Fancy')
        .fancy(16)
      Text('Fancy')
        .fancy(24)
    }
  }
}
  • @Extend裝飾的方法的參數(shù)可以為function,作為Event事件的句柄。
@Extend(Text) function makeMeClick(onClick: () => void) {
  .backgroundColor(Color.Blue)
  .onClick(onClick)
}

@Entry
@Component
struct FancyUse {
  @State label: string = 'Hello World';

  onClickHandler() {
    this.label = 'Hello ArkUI';
  }

  build() {
    Row({ space: 10 }) {
      Text(`${this.label}`)
        .makeMeClick(this.onClickHandler.bind(this))
    }
  }
}
  • @Extend的參數(shù)可以為狀態(tài)變量,當(dāng)狀態(tài)變量改變時,UI可以正常的被刷新渲染。
@Extend(Text) function fancy (fontSize: number) {
  .fontColor(Color.Red)
  .fontSize(fontSize)
}

@Entry
@Component
struct FancyUse {
  @State fontSizeValue: number = 20
  build() {
    Row({ space: 10 }) {
      Text('Fancy')
        .fancy(this.fontSizeValue)
        .onClick(() => {
          this.fontSizeValue = 30
        })
    }
  }
}

使用場景

以下示例聲明了3個Text組件,每個Text組件均設(shè)置了fontStyle、fontWeight和backgroundColor樣式。

@Entry
@Component
struct FancyUse {
  @State label: string = 'Hello World'

  build() {
    Row({ space: 10 }) {
      Text(`${this.label}`)
        .fontStyle(FontStyle.Italic)
        .fontWeight(100)
        .backgroundColor(Color.Blue)
      Text(`${this.label}`)
        .fontStyle(FontStyle.Italic)
        .fontWeight(200)
        .backgroundColor(Color.Pink)
      Text(`${this.label}`)
        .fontStyle(FontStyle.Italic)
        .fontWeight(300)
        .backgroundColor(Color.Orange)
    }.margin('20%')
  }
}

@Extend將樣式組合復(fù)用,示例如下。

@Extend(Text) function fancyText(weightValue: number, color: Color) {
  .fontStyle(FontStyle.Italic)
  .fontWeight(weightValue)
  .backgroundColor(color)
}

通過@Extend組合樣式后,使得代碼更加簡潔,增強(qiáng)可讀性。

@Entry
@Component
struct FancyUse {
  @State label: string = 'Hello World'

  build() {
    Row({ space: 10 }) {
      Text(`${this.label}`)
        .fancyText(100, Color.Blue)
      Text(`${this.label}`)
        .fancyText(200, Color.Pink)
      Text(`${this.label}`)
        .fancyText(300, Color.Orange)
    }.margin('20%')
  }
}

stateStyles:多態(tài)樣式

@Styles和@Extend僅僅應(yīng)用于靜態(tài)頁面的樣式復(fù)用,stateStyles可以依據(jù)組件的內(nèi)部狀態(tài)的不同,快速設(shè)置不同樣式。這就是我們本章要介紹的內(nèi)容stateStyles(又稱為:多態(tài)樣式)。

概述

stateStyles是屬性方法,可以根據(jù)UI內(nèi)部狀態(tài)來設(shè)置樣式,類似于css偽類,但語法不同。ArkUI提供以下四種狀態(tài):

  • focused:獲焦態(tài)。
  • normal:正常態(tài)。
  • pressed:按壓態(tài)。
  • disabled:不可用態(tài)。

使用場景

基礎(chǔ)場景

下面的示例展示了stateStyles最基本的使用場景。Button處于第一個組件,默認(rèn)獲焦,生效focused指定的粉色樣式。按壓時顯示為pressed態(tài)指定的黑色。如果在Button前再放一個組件,使其不處于獲焦態(tài),就會生效normal態(tài)的黃色。

@Entry
@Component
struct StateStylesSample {
  build() {
    Column() {
      Button('Click me')
        .stateStyles({
          focused: {
            .backgroundColor(Color.Pink)
          },
          pressed: {
            .backgroundColor(Color.Black)
          },
          normal: {
            .backgroundColor(Color.Yellow)
          }
        })
    }.margin('30%')
  }
}

圖1?獲焦態(tài)和按壓態(tài)

HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(基本語法 五),HarmonyOS方舟(ArkUI)框架開發(fā),學(xué)習(xí),harmonyos,華為,ArkTS,聲明式

?

@Styles和stateStyles聯(lián)合使用

以下示例通過@Styles指定stateStyles的不同狀態(tài)。

@Entry
@Component
struct MyComponent {
  @Styles normalStyle() {
    .backgroundColor(Color.Gray)
  }

  @Styles pressedStyle() {
    .backgroundColor(Color.Red)
  }

  build() {
    Column() {
      Text('Text1')
        .fontSize(50)
        .fontColor(Color.White)
        .stateStyles({
          normal: this.normalStyle,
          pressed: this.pressedStyle,
        })
    }
  }
}

圖2?正常態(tài)和按壓態(tài)

HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(基本語法 五),HarmonyOS方舟(ArkUI)框架開發(fā),學(xué)習(xí),harmonyos,華為,ArkTS,聲明式

?

在stateStyles里使用常規(guī)變量和狀態(tài)變量

stateStyles可以通過this綁定組件內(nèi)的常規(guī)變量和狀態(tài)變量。

@Entry
@Component
struct CompWithInlineStateStyles {
  @State focusedColor: Color = Color.Red;
  normalColor: Color = Color.Green

  build() {
    Button('clickMe').height(100).width(100)
      .stateStyles({
        normal: {
          .backgroundColor(this.normalColor)
        },
        focused: {
          .backgroundColor(this.focusedColor)
        }
      })
      .onClick(() => {
        this.focusedColor = Color.Pink
      })
      .margin('30%')
  }
}

Button默認(rèn)獲焦顯示紅色,點擊事件觸發(fā)后,獲焦態(tài)變?yōu)榉凵?/p>

圖3?點擊改變獲焦態(tài)樣式

HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(基本語法 五),HarmonyOS方舟(ArkUI)框架開發(fā),學(xué)習(xí),harmonyos,華為,ArkTS,聲明式???????文章來源地址http://www.zghlxwxcb.cn/news/detail-581146.html

到了這里,關(guān)于HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(基本語法 五)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(狀態(tài)管理 二)

    HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(狀態(tài)管理 二)

    @Prop裝飾的變量可以和父組件建立單向的同步關(guān)系。@Prop裝飾的變量是可變的,但是變化不會同步回其父組件。 @Prop裝飾的變量和父組件建立單向的同步關(guān)系: @Prop變量允許在本地修改,但修改后的變化不會同步回父組件。 當(dāng)父組件中的數(shù)據(jù)源更改時,與之相關(guān)的@Prop裝飾的變

    2024年02月14日
    瀏覽(47)
  • HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(狀態(tài)管理 六)

    HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—學(xué)習(xí)ArkTS語言(狀態(tài)管理 六)

    AppStorage是應(yīng)用全局的UI狀態(tài)存儲,是和應(yīng)用的進(jìn)程綁定的,由UI框架在應(yīng)用程序啟動時創(chuàng)建,為應(yīng)用程序UI狀態(tài)屬性提供中央存儲。 和LocalStorage不同的是,LocalStorage是頁面級的,通常應(yīng)用于頁面內(nèi)的數(shù)據(jù)共享。而對于AppStorage,是應(yīng)用級的全局狀態(tài)共享。 AppStorage是在應(yīng)用啟動

    2024年02月20日
    瀏覽(26)
  • HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—方舟開發(fā)框架(ArkUI)概述

    HarmonyOS學(xué)習(xí)路之方舟開發(fā)框架—方舟開發(fā)框架(ArkUI)概述

    方舟開發(fā)框架(簡稱ArkUI)為HarmonyOS應(yīng)用的UI開發(fā)提供了完整的基礎(chǔ)設(shè)施,包括簡潔的UI語法、豐富的UI功能(組件、布局、動畫以及交互事件),以及實時界面預(yù)覽工具等,可以支持開發(fā)者進(jìn)行可視化界面開發(fā)。 UI: 即用戶界面。開發(fā)者可以將應(yīng)用的用戶界面設(shè)計為多個功能

    2024年02月16日
    瀏覽(96)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(動畫開發(fā))

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(動畫開發(fā))

    動畫是組件的基礎(chǔ)特性之一,精心設(shè)計的動畫使UI變化更直觀,有助于改進(jìn)應(yīng)用程序的外觀并改善用戶體驗。Java UI框架提供了幀動畫、數(shù)值動畫和屬性動畫,并提供了將多個動畫同時操作的動畫集合。 幀動畫是利用視覺暫留現(xiàn)象,將一系列靜止的圖片按序播放,給用戶產(chǎn)生動

    2024年02月09日
    瀏覽(87)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(TableLayout)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(TableLayout)

    TableLayout使用表格的方式劃分子組件。 TableLayout的共有XML屬性繼承自:Component TableLayout的自有XML屬性見下表: 屬性名稱 中文描述 取值 取值說明 使用案例 alignment_type 對齊方式 align_edges 表示TableLayout內(nèi)的組件按邊界對齊。 ohos:alignment_type=\\\"align_edges\\\" align_contents 表示TableLayout內(nèi)的

    2024年02月09日
    瀏覽(15)
  • HarmonyOS/OpenHarmony應(yīng)用開發(fā)-ArkTS語言基本語法說明

    HarmonyOS/OpenHarmony應(yīng)用開發(fā)-ArkTS語言基本語法說明

    圖1? 示例效果圖 ? 本示例中,ArkTS的基本組成如下所示。 圖2? ArkTS的基本組成 ? ? 裝飾器: 用于裝飾類、結(jié)構(gòu)、方法以及變量,并賦予其特殊的含義。如上述示例中@Entry、@Component和@State都是裝飾器,@Component表示自定義組件,@Entry表示該自定義組件為入口組件,@State表示組

    2024年02月07日
    瀏覽(37)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(PositionLayout&&AdaptiveBoxLayout)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(PositionLayout&&AdaptiveBoxLayout)

    在PositionLayout中,子組件通過指定準(zhǔn)確的x/y坐標(biāo)值在屏幕上顯示。(0, 0)為左上角;當(dāng)向下或向右移動時,坐標(biāo)值變大;允許組件之間互相重疊。 PositionLayout示意圖 PositionLayout以坐標(biāo)的形式控制組件的顯示位置,允許組件相互重疊。 在layout目錄下的XML文件中創(chuàng)建PositionLayout并添

    2024年02月09日
    瀏覽(20)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(自定義組件與布局 一)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(自定義組件與布局 一)

    HarmonyOS提供了一套復(fù)雜且強(qiáng)大的Java UI框架,其中Component提供內(nèi)容顯示,是界面中所有組件的基類。ComponentContainer作為容器容納Component或ComponentContainer對象,并對它們進(jìn)行布局。 Java UI框架也提供了一部分Component和ComponentContainer的具體子類,即常用的組件(比如:Text、Button、

    2024年02月09日
    瀏覽(14)
  • HarmonyOS學(xué)習(xí) -- ArkTS開發(fā)語言入門

    HarmonyOS學(xué)習(xí) -- ArkTS開發(fā)語言入門

    ArkTS是HarmonyOS主力應(yīng)用開發(fā)語言。它在TypeScript(簡稱TS)的基礎(chǔ)上,匹配ArkUI框架,擴(kuò)展了聲明式UI、狀態(tài)管理等相應(yīng)的能力,讓開發(fā)者以更簡潔、更自然的方式開發(fā)跨端應(yīng)用。 JavaScript是一種屬于網(wǎng)絡(luò)的高級腳本語言,已經(jīng)被廣泛應(yīng)用開發(fā),常用來為網(wǎng)頁添加各式各樣的動態(tài)

    2024年02月08日
    瀏覽(28)
  • HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(JS FA調(diào)用Java PA)

    HarmonyOS學(xué)習(xí)路之開發(fā)篇—Java UI框架(JS FA調(diào)用Java PA)

    使用兼容JS的類Web開發(fā)范式的方舟開發(fā)框架提供了JS FA(Feature Ability)調(diào)用Java PA(Particle Ability)的機(jī)制,該機(jī)制提供了一種通道來傳遞方法調(diào)用、處理數(shù)據(jù)返回以及訂閱事件上。 當(dāng)前提供Ability和Internal Ability兩種調(diào)用方式。 Ability:擁有獨立的Ability生命周期,F(xiàn)A使用遠(yuǎn)端進(jìn)程

    2024年02月09日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包