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

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

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

鴻蒙頁(yè)面示例

王程 ? 來(lái)源:jf_75796907 ? 作者:jf_75796907 ? 2024-02-01 11:24 ? 次閱讀

@Component

標(biāo)簽修飾UI,相當(dāng)于Android的view,所有的UI組件都要使用@Component標(biāo)簽

@Entry標(biāo)簽

表明當(dāng)前是一個(gè)頁(yè)面,不是一個(gè)視圖。多個(gè)組件組合時(shí)只能有一個(gè)@Entry標(biāo)簽,被該標(biāo)簽修飾后頁(yè)面才會(huì)有生命周期

import router from '@ohos.router'
@Entry
@Component
struct Login {
  @State title: string = '登錄頁(yè)面'

  build() {
    Row() {

      Column() {

        Text(this.title).fontSize(20)
          .fontWeight(FontWeight.Bold)
          .textAlign(TextAlign.Center)
          .width('100%').margin({top:10})

        Button() {
          Text('返回')
            .fontSize(18)
            .fontWeight(FontWeight.Bold)
        }.type(ButtonType.Capsule)
        .padding({top:5,bottom:5,left:10,right:10})
        .margin({top:20})
        .onClick(()=>{
          try{
            router.back()
          }catch (err){
            console.error("錯(cuò)誤="+err.code +" message="+err.message)
          }
        })
      }
    }.width('100%')
  }

  onPageShow(){
    //頁(yè)面每次顯示時(shí)觸發(fā)
  }

  onPageHide(){
    //頁(yè)面每次隱藏時(shí)觸發(fā)
  }

  onBackPress(){
    //用戶點(diǎn)擊返回按鈕時(shí)觸發(fā)
  }

  aboutToAppear(){
    //在執(zhí)行build函數(shù)之前執(zhí)行
  }

  aboutToDisappear(){
    //組件即將銷毀時(shí)執(zhí)行
  }
}

@Builder標(biāo)簽

使用該標(biāo)簽的方法會(huì)自動(dòng)構(gòu)建一個(gè)組件

  • 全局方式
@Builder function xxx{}
  • 組件內(nèi)方式
@Builder xx{}

需要傳遞參數(shù)時(shí)采用引用傳遞 $$

//方法
@Builder function builderFunc($$:{showText:string}){
  Text('全局 builder方法 '+$$.showText)
    .fontSize(18)
    .fontColor("#333333")
}
//調(diào)用
builderFunc({showText:'全局豬頭'})

@BuilderParam標(biāo)簽

對(duì)應(yīng)@Builder標(biāo)簽,類似于java接口傳遞

/**
 * 全局styles樣式
 */
@Styles function globalFancy(){
  .width(100)
  .height(150)
  .backgroundColor(Color.Pink)
}

@Builder function builderFunc($$:{showText:string}){
  Text('全局 builder方法 '+$$.showText)
    .fontSize(18)
    .fontColor("#333333")
}

@Component
struct testBuildParam{

  @BuilderParam param:()=>void

  build(){
    Column(){
      this.param()
    }
  }
}


//頁(yè)面入口
@Entry
@Component
struct StylesPage{

  @State heightNum:number = 100

  @Styles selfFancy(){
    .width(120)
    .height(this.heightNum)
    .backgroundColor(Color.Yellow)
    .onClick(()=>{
      this.heightNum = 180
    })
  }

  @Builder builderSelf(){
    Text("組件內(nèi)方法")
      .fontSize(15)
      .fontColor("#999999")
      .margin({top:20})
  }

  build(){

    Column({space:10}){
      Text("全局引用styles")
        .globalFancy()
        .fontSize(25)

      Text("組件內(nèi)的style")
        .selfFancy()
        .fontSize(18)

      this.builderSelf()
      builderFunc({showText:'全局豬頭'})

      testBuildParam({param:this.builderSelf})

    }

  }
}


審核編輯 黃宇

HTML 1800 字?jǐn)?shù) 121 段落

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

    57

    文章

    2365

    瀏覽量

    42893
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙原生頁(yè)面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用

    隨著HarmonyOS NEXT的正式推出,鴻蒙原生應(yīng)用開(kāi)發(fā)熱度高漲,數(shù)量激增。但在三方應(yīng)用鴻蒙化進(jìn)程中,性能問(wèn)題頻出。為此,HarmonyOS NEXT推出了一整套原生頁(yè)面高性能解決方案,包括
    發(fā)表于 01-02 18:00

    鴻蒙開(kāi)發(fā):?jiǎn)?dòng)指定頁(yè)面

    當(dāng)PageAbility的啟動(dòng)模式設(shè)置為單例時(shí)(具體設(shè)置方法和典型場(chǎng)景示例見(jiàn)[PageAbility的啟動(dòng)模式],缺省情況下是單實(shí)例模式),若PageAbility已被拉起,再次啟動(dòng)PageAbility會(huì)觸發(fā)onNewWant回調(diào)(即非首次拉起)。
    的頭像 發(fā)表于 06-19 09:29 ?429次閱讀
    <b class='flag-5'>鴻蒙</b>開(kāi)發(fā):?jiǎn)?dòng)指定<b class='flag-5'>頁(yè)面</b>

    鴻蒙開(kāi)發(fā):【頁(yè)面棧及任務(wù)鏈】

    單個(gè)UIAbility組件可以實(shí)現(xiàn)多個(gè)頁(yè)面,并在多個(gè)頁(yè)面之間跳轉(zhuǎn),這種UIAbility組件內(nèi)部的頁(yè)面跳轉(zhuǎn)關(guān)系稱為“頁(yè)面棧”,由ArkUI框架統(tǒng)一管理,如下圖中的UIAbility1
    的頭像 發(fā)表于 06-14 10:10 ?436次閱讀
    <b class='flag-5'>鴻蒙</b>開(kāi)發(fā):【<b class='flag-5'>頁(yè)面</b>棧及任務(wù)鏈】

    鴻蒙開(kāi)發(fā)接口UI界面:【@ohos.router (頁(yè)面路由)】

    本模塊首批接口從API version 8開(kāi)始支持。后續(xù)版本的新增接口,采用上角標(biāo)單獨(dú)標(biāo)記接口的起始版本。 > - 頁(yè)面路由需要在頁(yè)面渲染完成之后才能調(diào)用,在onInit和onReady生命周期中頁(yè)面還處于渲染階段,禁止調(diào)用
    的頭像 發(fā)表于 05-28 16:26 ?954次閱讀
    <b class='flag-5'>鴻蒙</b>開(kāi)發(fā)接口UI界面:【@ohos.router (<b class='flag-5'>頁(yè)面</b>路由)】

    鴻蒙OS開(kāi)發(fā):典型頁(yè)面場(chǎng)景【一次開(kāi)發(fā),多端部署】(設(shè)置應(yīng)用頁(yè)面

    本小節(jié)以“設(shè)置”應(yīng)用頁(yè)面為例,介紹如何使用自適應(yīng)布局能力和響應(yīng)式布局能力適配不同尺寸窗口。
    的頭像 發(fā)表于 05-27 10:33 ?1222次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā):典型<b class='flag-5'>頁(yè)面</b>場(chǎng)景【一次開(kāi)發(fā),多端部署】(設(shè)置應(yīng)用<b class='flag-5'>頁(yè)面</b>)

    鴻蒙OS開(kāi)發(fā):典型頁(yè)面場(chǎng)景【一次開(kāi)發(fā),多端部署】實(shí)戰(zhàn)(設(shè)置典型頁(yè)面

    示例展示了設(shè)置應(yīng)用的典型頁(yè)面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開(kāi)發(fā)、多端部署的能力。
    的頭像 發(fā)表于 05-27 09:36 ?1171次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā):典型<b class='flag-5'>頁(yè)面</b>場(chǎng)景【一次開(kāi)發(fā),多端部署】實(shí)戰(zhàn)(設(shè)置典型<b class='flag-5'>頁(yè)面</b>)

    鴻蒙OS開(kāi)發(fā):典型頁(yè)面場(chǎng)景【一次開(kāi)發(fā),多端部署】實(shí)戰(zhàn)(應(yīng)用市場(chǎng)首頁(yè))

    示例展示了應(yīng)用市場(chǎng)首頁(yè),頁(yè)面中包括Tab欄、運(yùn)營(yíng)橫幅、精品應(yīng)用、精品游戲等。
    的頭像 發(fā)表于 05-24 15:21 ?923次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā):典型<b class='flag-5'>頁(yè)面</b>場(chǎng)景【一次開(kāi)發(fā),多端部署】實(shí)戰(zhàn)(應(yīng)用市場(chǎng)首頁(yè))

    鴻蒙OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】( 設(shè)置app頁(yè)面

    示例展示了設(shè)置應(yīng)用的典型頁(yè)面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開(kāi)發(fā)、多端部署的能力。
    的頭像 發(fā)表于 05-21 14:56 ?1208次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā):【一次開(kāi)發(fā),多端部署】( 設(shè)置app<b class='flag-5'>頁(yè)面</b>)

    鴻蒙原生應(yīng)用元服務(wù)開(kāi)發(fā)-Web應(yīng)用側(cè)調(diào)用前端頁(yè)面函數(shù)

    應(yīng)用側(cè)可以通過(guò)runJavaScript()方法調(diào)用前端頁(yè)面的JavaScript相關(guān)函數(shù)。 在下面的示例中,點(diǎn)擊應(yīng)用側(cè)的“runJavaScript”按鈕時(shí),來(lái)觸發(fā)前端頁(yè)面的htmlTest
    發(fā)表于 05-11 15:31

    純血鴻蒙開(kāi)發(fā)教程-運(yùn)行時(shí)動(dòng)態(tài)加載頁(yè)面提升性能

    很長(zhǎng)時(shí)間,但這些復(fù)雜的子頁(yè)面與主頁(yè)渲染無(wú)關(guān)。 本文推薦使用動(dòng)態(tài)加載解決上述問(wèn)題,不在應(yīng)用程序加載時(shí)就將所有模塊都加載進(jìn)來(lái),而是按需加載模塊,增加應(yīng)用靈活性,提升應(yīng)用性能。 場(chǎng)景示例 主頁(yè) 子頁(yè)面
    發(fā)表于 05-10 20:52

    鴻蒙OS開(kāi)發(fā)實(shí)例:【頁(yè)面傳值跳轉(zhuǎn)】

    本篇主要介紹如何在HarmonyOS中,在頁(yè)面跳轉(zhuǎn)之間如何傳值 HarmonyOS 的頁(yè)面指的是帶有@Entry裝飾器的文件,其不能獨(dú)自存在,必須依賴UIAbility這樣的組件容器 如下是官方關(guān)于State模型開(kāi)發(fā)模式下的應(yīng)用包結(jié)構(gòu)示意圖,Page就是帶有@En
    的頭像 發(fā)表于 03-29 20:16 ?2280次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā)實(shí)例:【<b class='flag-5'>頁(yè)面</b>傳值跳轉(zhuǎn)】

    鴻蒙OS開(kāi)發(fā)實(shí)例:【工具類封裝-頁(yè)面路由】

    import common from '@ohos.app.ability.common'; import router from '@ohos.router'封裝app內(nèi)的頁(yè)面之間跳轉(zhuǎn)、app與app之間的跳轉(zhuǎn)工具類
    的頭像 發(fā)表于 03-28 16:16 ?929次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā)實(shí)例:【工具類封裝-<b class='flag-5'>頁(yè)面</b>路由】

    鴻蒙實(shí)戰(zhàn)項(xiàng)目開(kāi)發(fā):【短信服務(wù)】

    概述 本示例展示了電話服務(wù)中發(fā)送短信的功能。 樣例展示 涉及OpenHarmony技術(shù)特性 網(wǎng)絡(luò)通信 難度級(jí)別 中級(jí) 基礎(chǔ)信息 使用@ohos.telephony.sms接口展示了電話服務(wù)中發(fā)
    發(fā)表于 03-03 21:29

    Harmony 鴻蒙頁(yè)面級(jí)變量的狀態(tài)管理

    頁(yè)面級(jí)變量的狀態(tài)管理 @State、@Prop、@Link、@Provide、@Consume、@ObjectLink、@Observed和@Watch用于管理頁(yè)面級(jí)變量的狀態(tài)。 @State
    的頭像 發(fā)表于 01-25 10:42 ?611次閱讀
    Harmony <b class='flag-5'>鴻蒙</b><b class='flag-5'>頁(yè)面</b>級(jí)變量的狀態(tài)管理

    Harmony 鴻蒙頁(yè)面級(jí)變量的狀態(tài)管理

    頁(yè)面級(jí)變量的狀態(tài)管理 @State、@Prop、@Link、@Provide、@Consume、@ObjectLink、@Observed和@Watch用于管理頁(yè)面級(jí)變量的狀態(tài)。 @State
    發(fā)表于 01-24 20:04