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

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

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

鴻蒙ArkUI開(kāi)發(fā)-實(shí)現(xiàn)增刪Tab頁(yè)簽

jf_46214456 ? 2024-01-29 18:43 ? 次閱讀

場(chǎng)景介紹

部分應(yīng)用在使用過(guò)程中需要自定義添加或刪除標(biāo)簽的場(chǎng)景,比如在瀏覽器中的頂部標(biāo)簽欄中需要新打開(kāi)或關(guān)閉網(wǎng)頁(yè)頁(yè)簽,而這種場(chǎng)景與Tabs組件效果類(lèi)似,但Tabs組件不提供增加或刪除頁(yè)簽的功能,不能自由的增加刪除頁(yè)簽,需要開(kāi)發(fā)者自己實(shí)現(xiàn)Tabs中增刪頁(yè)簽功能。本文以瀏覽器中增加或刪除頁(yè)簽為例,實(shí)現(xiàn)Tabs中頁(yè)簽的增刪功能。

效果呈現(xiàn)

如下動(dòng)圖所示:

環(huán)境要求

本例基于以下環(huán)境開(kāi)發(fā),開(kāi)發(fā)者也可以基于其他適配的版本進(jìn)行開(kāi)發(fā):

  • IDE: DevEco Studio 4.0 Release
  • SDK: Ohos_sdk_public 4.0.10.13 (API Version 10 Release)

實(shí)現(xiàn)原理

本例涉及的關(guān)鍵特性以及實(shí)現(xiàn)方案如下:

  • 通過(guò)@Builder自定義封裝一個(gè)導(dǎo)航頁(yè)簽欄,并通過(guò)ForEach完成對(duì)Tabs組件的內(nèi)容頁(yè)和導(dǎo)航頁(yè)簽欄的動(dòng)態(tài)渲染。
  • 通過(guò)TabsController的changeIndex可實(shí)現(xiàn)頁(yè)面的跳轉(zhuǎn),傳入的index是數(shù)組中對(duì)應(yīng)的索引值。
  • 頁(yè)簽的增加通過(guò)數(shù)組的push方法,增加數(shù)組元素。
  • 刪除頁(yè)簽通過(guò)通過(guò)刪除頁(yè)面對(duì)應(yīng)數(shù)組的索引值處的數(shù)據(jù)完成,刪除后頁(yè)面跳轉(zhuǎn)位置根據(jù)業(yè)務(wù)邏輯要求確定跳轉(zhuǎn)頁(yè)面對(duì)應(yīng)的索引值。

開(kāi)發(fā)步驟

  1. 整體布局分為兩部分:頁(yè)面內(nèi)容和頁(yè)簽部分。頁(yè)面視圖部分使用Tabs,其中頁(yè)簽對(duì)應(yīng)顯示的內(nèi)容需要放入TabContent組件中。頁(yè)簽部分通過(guò)@Builder自定義封裝一個(gè)tabBar組件,放入Tabs中的tabBar屬性中。
    頁(yè)面視圖代碼塊:

    Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
      ForEach(this.tabArray, (item: number) = > {
        TabContent() {
          Text('我是頁(yè)面 ' + item + " 的內(nèi)容")
            .height('100%')
            .width('100%')
            .fontSize(30)
            .backgroundColor("#ffffffff")
        }.tabBar(this.Tab(item))
      }, (item: number) = > item.toString() + util.generateRandomUUID())
    }
    .barMode(BarMode.Scrollable, { margin: 30 })
    .onChange((index) = > {
      this.focusIndex = index
    })
    .barHeight(30)
    

    自定義tabBar代碼塊:

    //控制頁(yè)簽渲染的數(shù)組
    @State tabArray: Array< number > = [0]
    //Tabs組件當(dāng)前顯示的頁(yè)簽
    @State focusIndex: number = 0
    //創(chuàng)建頁(yè)簽時(shí)的頁(yè)簽index
    @State pre: number = -1
    //Tabs組件控制器,根據(jù)組件下標(biāo)控制tab跳轉(zhuǎn)
    private controller: TabsController = new TabsController()
    
    //自定義導(dǎo)航頁(yè)簽欄
    @Builder
    Tab(tabNumber: number) {
      Row({ space: 20 }) {
        Text("頁(yè)簽 " + tabNumber).fontSize(18)
        Image($r('app.media.ic_public_cancel_filled')).width(20).height(20)
      }
      .justifyContent(FlexAlign.Center)
      .constraintSize({ minWidth: 35 })
      .width(120)
      .height(30)
      .borderRadius({ topLeft: 10, topRight: 10 })
      .backgroundColor(this.tabArray.indexOf(tabNumber) === this.focusIndex ? "#ffffffff" : "#ffb7b7b7")
    }
    
  2. 實(shí)現(xiàn)頁(yè)簽和頁(yè)面視圖的聯(lián)動(dòng):這里主要通過(guò)TabsController的changeIndex來(lái)實(shí)現(xiàn)對(duì)應(yīng)的試圖跳轉(zhuǎn),但需要注意由于之后會(huì)增刪數(shù)組元素的操作,所以此處傳入的index值是選擇頁(yè)面的tabNumber在數(shù)組中的索引值。

    this.focusIndex = this.tabArray.indexOf(tabNumber)
    
  3. 增添數(shù)組元素實(shí)現(xiàn)增加頁(yè)簽的效果:增添數(shù)組元素使用數(shù)組的push方法在tabArray添加數(shù)據(jù)即可,但由于此demo原始定義的數(shù)組是連續(xù)的自然數(shù),后續(xù)增刪數(shù)組會(huì)打亂原有順序,所以此處處理為先判斷最后一個(gè)元素的值再加1,由于TabBar的渲染是通過(guò)ForEach被@State修飾的數(shù)組,因此當(dāng)tabArray中添加數(shù)據(jù)后系統(tǒng)會(huì)通知ForEach便利數(shù)組重新渲染頁(yè)面。

    this.tabArray.push(this.tabArray[this.tabArray.length - 1] + 1)
    
  4. 通常在添加新頁(yè)面后,瀏覽器會(huì)將頁(yè)面跳轉(zhuǎn)到新添加的頁(yè)面,因此在向tabArray中完成數(shù)據(jù)推送后,需要將頁(yè)簽通過(guò)TabsController中的changeIndex方法跳轉(zhuǎn)到最后一個(gè)。

    this.focusIndex = this.tabArray.length - 1
    this.controller.changeIndex(this.focusIndex)
    
  5. 當(dāng)用戶選擇另一個(gè)頁(yè)簽時(shí),可通過(guò)自定義頁(yè)簽中通用事件onClick進(jìn)行控制,當(dāng)用戶點(diǎn)擊待選擇的頁(yè)簽后,獲取當(dāng)前頁(yè)簽對(duì)應(yīng)的下標(biāo),然后通過(guò)TabsController中的changeIndex方法進(jìn)行跳轉(zhuǎn),此外可以通過(guò)更改頁(yè)簽背景顏色標(biāo)識(shí)被選中頁(yè)簽的。

    .backgroundColor(this.tabArray.indexOf(tabNumber) === this.focusIndex ? "#ffffffff" : "#ffb7b7b7")
    .onClick(() = > {
      this.focusIndex = this.tabArray.indexOf(tabNumber)
      this.controller.changeIndex(this.focusIndex)
    })
    
  6. 刪除頁(yè)面有三種情況(刪除不同位置的頁(yè)面)。

    • 第一種情況是被關(guān)閉頁(yè)面為最后一個(gè)頁(yè)面,且當(dāng)前選中的頁(yè)面為最后一個(gè)頁(yè)面,如果當(dāng)前被選中頁(yè)面是剛剛被其他頁(yè)面創(chuàng)建的情況,因此頁(yè)面需要跳回到創(chuàng)建被刪除頁(yè)簽的頁(yè)簽(邏輯參考chrome瀏覽器)

      if (this.pre >= 0) {
        this.focusIndex = this.pre
      } 
      this.tabArray.splice(this.tabArray.indexOf(tabNumber), 1)
      

      如果不是的話直接將當(dāng)前顯示頁(yè)簽下下標(biāo)設(shè)置為前一個(gè)頁(yè)簽下標(biāo),tabArray數(shù)組通過(guò)splice方法刪除頁(yè)簽,并通過(guò)TabsController完成跳轉(zhuǎn),此外頁(yè)面只要有關(guān)閉操作,頁(yè)面就不可以跳回打開(kāi)該頁(yè)面的頁(yè)面,即將 pre設(shè)置為-1。

      this.focusIndex = this.focusIndex - 1
      this.tabArray.splice(this.tabArray.indexOf(tabNumber), 1)
      this.pre = -1
      this.controller.changeIndex(this.focusIndex)
      
    • 第二種情況,當(dāng)用戶當(dāng)前選擇的不是最后一個(gè)標(biāo)簽,然后直接刪除其他頁(yè)簽時(shí),可以直接刪除刪除,但是需要重新計(jì)算當(dāng)前選中頁(yè)簽在tabArray中的實(shí)時(shí)位置,到新注意需要排除用戶在最后一個(gè)頁(yè)簽刪除當(dāng)前頁(yè)簽的情況。

      //當(dāng)前選擇頁(yè)面的對(duì)應(yīng)數(shù)組中的數(shù)據(jù)值
      let focusNumber = this.tabArray[this.focusIndex]
      //用于判斷是否是用戶在最后一個(gè)頁(yè)簽刪除當(dāng)前頁(yè)簽的情況
      if (this.tabArray.indexOf(focusNumber) >= 0) {
        this.focusIndex = this.tabArray.indexOf(focusNumber)
      }
      this.controller.changeIndex(this.focusIndex)
      
    • 第三種情況,當(dāng)用戶當(dāng)前選擇的不是最后一個(gè)標(biāo)簽,且刪除被選中頁(yè)面,直接刪除,然后通過(guò)TabsController完成跳轉(zhuǎn),不需要額外操作。

    說(shuō)明

    • 由于Tabs組件中的導(dǎo)航頁(yè)簽欄會(huì)占滿屏幕,導(dǎo)致添加按鈕無(wú)法直接添加到與頁(yè)簽直接平齊的位置,因此通過(guò)層疊布局(Stack)的方式,將添加頁(yè)簽按鈕覆蓋到Tabs組件上,通過(guò)Stack中的對(duì)齊方式將添加按鈕調(diào)整到合適位置。
    • 用于Tabs添加或刪除子節(jié)點(diǎn)時(shí),F(xiàn)orEach需要重新將所有頁(yè)簽進(jìn)行重新渲染,如果在添加或刪除完頁(yè)簽后直接調(diào)用TabsController中的changeIndex進(jìn)行跳轉(zhuǎn),頁(yè)面無(wú)法調(diào)到指定頁(yè)簽。這是由于ForEach還未將組件渲染完成,將子組件掛載到Tabs中,因此建議通過(guò)setTimeOut延遲一段時(shí)間再進(jìn)行跳轉(zhuǎn),經(jīng)過(guò)驗(yàn)證大概50ms后即可,開(kāi)發(fā)者可再自行驗(yàn)證。
    setTimeout(() = > {
     this.controller.changeIndex(this.focusIndex)
    }, 50)
    

完整實(shí)例

完整示例代碼如下:

import util from '@ohos.util'

@Entry
@Component
struct Drag {
  //控制頁(yè)簽渲染的數(shù)組
  @State tabArray: Array< number > = [0]
  //Tabs組件當(dāng)前顯示的頁(yè)簽下標(biāo)
  @State focusIndex: number = 0
  //創(chuàng)建頁(yè)簽時(shí)的頁(yè)簽index
  @State pre: number = -1
  //Tabs組件控制器,根據(jù)組件下標(biāo)控制tab跳轉(zhuǎn)
  private controller: TabsController = new TabsController()

  // 單獨(dú)的頁(yè)簽
  @Builder
  Tab(tabNumber: number) {
    Row({ space: 20 }) {
      Text("頁(yè)簽 " + tabNumber).fontSize(18)
      Image($r('app.media.ic_public_cancel_filled')).width(20).height(20).onClick(() = > {
        //獲取Tabs組件當(dāng)前顯示的頁(yè)簽中顯示的數(shù)字
        let focusNumber = this.tabArray[this.focusIndex]
        //被刪除的頁(yè)簽是否是當(dāng)前選中的頁(yè)簽,且是最后一個(gè)頁(yè)簽
        if (this.focusIndex === this.tabArray.indexOf(tabNumber) && this.focusIndex == this.tabArray.length - 1) {
          //判斷是否需要跳回到創(chuàng)建該頁(yè)簽時(shí)的頁(yè)簽,如果不需要直接跳轉(zhuǎn)到前一個(gè)頁(yè)簽
          if (this.pre >= 0) {
            this.focusIndex = this.pre
          } else {
            this.focusIndex = this.focusIndex - 1
          }
        }
        this.tabArray.splice(this.tabArray.indexOf(tabNumber), 1)
        this.pre = -1
        //對(duì)應(yīng)刪除頁(yè)面中的第二種情況
        if (this.tabArray.indexOf(focusNumber) >= 0) {
          this.focusIndex = this.tabArray.indexOf(focusNumber)
        }
        //設(shè)置50ms 延遲跳轉(zhuǎn)
        setTimeout(() = > {
          this.controller.changeIndex(this.focusIndex)
        }, 50)
      })
    }
    .justifyContent(FlexAlign.Center)
    .constraintSize({ minWidth: 35 })
    .width(120)
    .height(30)
    .borderRadius({ topLeft: 10, topRight: 10 })
    .backgroundColor(this.tabArray.indexOf(tabNumber) === this.focusIndex ? "#ffffffff" : "#ffb7b7b7")
    .onClick(() = > {
      this.focusIndex = this.tabArray.indexOf(tabNumber)
      setTimeout(() = > {
        this.controller.changeIndex(this.focusIndex)
      }, 50)
    })
  }

  build() {
    Column() {
      Column() {
        // 頁(yè)簽
        // Row() {
        Stack() {
          Row({ space: 7 }) {
            //tabs
            Tabs({ barPosition: BarPosition.Start, controller: this.controller }) {
              ForEach(this.tabArray, (item: number) = > {
                TabContent() {
                  Text('我是頁(yè)面 ' + item + " 的內(nèi)容")
                    .height('100%')
                    .width('100%')
                    .fontSize(30)
                    .backgroundColor("#ffffffff")
                }.tabBar(this.Tab(item))
              }, (item: number) = > item.toString() + util.generateRandomUUID())
            }
            .barMode(BarMode.Scrollable, { margin: 30 })
            .onChange((index) = > {
              this.focusIndex = index
            })
            .barHeight(30)
          }.width("100%")

          Row() {
            Image($r('app.media.ic_public_add_filled')).onClick(() = > {
              if (this.tabArray.length === 0) {
                this.tabArray.push(0)
                this.focusIndex = this.tabArray.length - 1
              } else {
                this.pre = this.focusIndex
                this.tabArray.push(this.tabArray[this.tabArray.length - 1] + 1)
                this.focusIndex = this.tabArray.length - 1
              }
              setTimeout(() = > {
                this.controller.changeIndex(this.focusIndex)
              }, 50)
            }).width(20).height(20)
          }.height(30).width(30).backgroundColor("#ffb7b7b7")
          .justifyContent(FlexAlign.Center)
        }
        .alignContent(Alignment.TopEnd)
        .width('100%')
        .backgroundColor("#ffb7b7b7")
      }
      .alignItems(HorizontalAlign.Start)
      .width('100%')
    }
    .height('100%')
  }
}

本文主要講解在鴻蒙開(kāi)發(fā)當(dāng)中ArkUI中的增刪Tab頁(yè)簽實(shí)現(xiàn),更多的鴻蒙ArkUI學(xué)習(xí),可以參考下面的學(xué)習(xí)曲線圖:

完整版鴻蒙os與openharmony技術(shù)路線與文檔,可在主頁(yè)保存

聲明:本文內(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)投訴
  • 鴻蒙系統(tǒng)
    +關(guān)注

    關(guān)注

    183

    文章

    2638

    瀏覽量

    67069
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2410

    瀏覽量

    43301
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3770

    瀏覽量

    17046
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙ArkUI開(kāi)發(fā)-Video組件的使用

    以視頻功能為例,在應(yīng)用開(kāi)發(fā)過(guò)程中,我們需要通過(guò)ArkUI提供的Video組件為應(yīng)用增加基礎(chǔ)的視頻播放功能。借助Video組件,我們可以實(shí)現(xiàn)視頻的播放功能并控制其播放狀態(tài)。常見(jiàn)的視頻播放場(chǎng)景包括觀看網(wǎng)絡(luò)上的較為流行的短視頻,也包括
    的頭像 發(fā)表于 01-23 16:59 ?1552次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>開(kāi)發(fā)</b>-Video組件的使用

    鴻蒙開(kāi)發(fā)ArkUI-X基礎(chǔ)知識(shí):【ArkUI跨平臺(tái)設(shè)計(jì)總體說(shuō)明】

    本文檔描述ArkUI開(kāi)發(fā)框架跨平臺(tái)運(yùn)行能力相關(guān)的總體技術(shù)方案。
    的頭像 發(fā)表于 05-24 15:41 ?1770次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>ArkUI</b>-X基礎(chǔ)知識(shí):【<b class='flag-5'>ArkUI</b>跨平臺(tái)設(shè)計(jì)總體說(shuō)明】

    鴻蒙開(kāi)發(fā)ArkUI-X基礎(chǔ)知識(shí):【ArkUI代碼工程及構(gòu)建介紹】

    ArkUI作為OpenHarmony的默認(rèn)開(kāi)發(fā)框架,在本項(xiàng)目(ArkUI-X)中需要做到一套代碼同時(shí)支持多平臺(tái)構(gòu)建,所以會(huì)采取共倉(cāng)開(kāi)發(fā)的方式,部分倉(cāng)直接指向OpenHarmony相關(guān)開(kāi)
    的頭像 發(fā)表于 05-25 16:45 ?2329次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>ArkUI</b>-X基礎(chǔ)知識(shí):【<b class='flag-5'>ArkUI</b>代碼工程及構(gòu)建介紹】

    鴻蒙開(kāi)發(fā)-ArkUI框架實(shí)戰(zhàn)【日歷應(yīng)用 】

    在一頁(yè)42個(gè)格子上顯示上個(gè)月、當(dāng)前月、下個(gè)月的日期,通過(guò)日歷應(yīng)用的開(kāi)發(fā)了解到了ArkUI組件的一些用法,生命周期和數(shù)據(jù)的加載過(guò)程,對(duì)之后的應(yīng)用開(kāi)發(fā)有很大的幫助。
    發(fā)表于 01-17 21:37

    OpenHarmony JS UI小型系統(tǒng)實(shí)現(xiàn)tab頁(yè)容器的方法

    應(yīng)用的不同模塊,但在小型系統(tǒng)中沒(méi)有提供tab頁(yè)容器,目前的需求是在L1設(shè)備上實(shí)現(xiàn)類(lèi)似于tabs頁(yè)
    發(fā)表于 04-01 09:45

    鴻蒙閃屏頁(yè)是怎么實(shí)現(xiàn)?

    安卓閃屏頁(yè)實(shí)現(xiàn)可以通過(guò)開(kāi)辟一個(gè)新的線程去實(shí)現(xiàn)?鴻蒙開(kāi)發(fā)是怎么實(shí)現(xiàn)的? 有具體代碼參考嗎??本人
    發(fā)表于 04-26 10:25

    HDD杭州站?ArkUI開(kāi)發(fā)更靈活

    HTML5頁(yè)面加載特性。 UI開(kāi)發(fā)效率提升:在交互歸一、多態(tài)樣式自定義、工具鏈體驗(yàn)等方面進(jìn)行了增強(qiáng)和提升,讓開(kāi)發(fā)更靈活。 圖1 ArkUI框架能力集二、聲明式Canvas繪制能力在W
    發(fā)表于 08-05 11:33

    編程小白也能快速掌握的ArkUI JS組件開(kāi)發(fā)

    ,Playground中ArkUI JS組件在線預(yù)覽又有更新啦~ 以下為本次新增組件一覽: ● tabs:頁(yè) ● stepper:步驟導(dǎo)航器 ● text:文本 ● form:表單 ● picker
    發(fā)表于 08-31 11:09

    ArkUI新能力,助力應(yīng)用開(kāi)發(fā)更便捷

    管理,以及實(shí)時(shí)界面預(yù)覽等相關(guān)能力,幫助您提升應(yīng)用開(kāi)發(fā)效率,并能在多種設(shè)備上實(shí)現(xiàn)生動(dòng)而流暢的用戶體驗(yàn)。隨著HarmonyOS 3.1版本的發(fā)布,ArkUI也新增許多能力,助力應(yīng)用開(kāi)發(fā)更便
    的頭像 發(fā)表于 02-15 16:35 ?938次閱讀

    鴻蒙ArkUI開(kāi)發(fā)-Tabs組件的使用

    鴻蒙ArkUI開(kāi)發(fā)-Tabs組件的使用
    的頭像 發(fā)表于 01-19 16:01 ?2151次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>開(kāi)發(fā)</b>-Tabs組件的使用

    鴻蒙ArkUI開(kāi)發(fā)實(shí)戰(zhàn):eTS版【笑話app】

    制作一款笑話app,使用ArkUI。
    的頭像 發(fā)表于 03-25 16:04 ?549次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b><b class='flag-5'>開(kāi)發(fā)</b>實(shí)戰(zhàn):eTS版【笑話app】

    鴻蒙ArkUI:【從代碼到UI顯示的整體渲染流程】

    方舟開(kāi)發(fā)框架(簡(jiǎn)稱ArkUI)是鴻蒙開(kāi)發(fā)的UI框架,提供如下兩種開(kāi)發(fā)范式,我們 **只學(xué)聲明式開(kāi)發(fā)
    的頭像 發(fā)表于 05-13 16:06 ?1147次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>:【從代碼到UI顯示的整體渲染流程】

    鴻蒙跨平臺(tái)框架:【ArkUi-X】創(chuàng)建工程

    鴻蒙推出了鴻ArkUi-X 框架所以就寫(xiě)個(gè)文章分享一下
    的頭像 發(fā)表于 05-13 17:48 ?1174次閱讀
    <b class='flag-5'>鴻蒙</b>跨平臺(tái)框架:【<b class='flag-5'>ArkUi</b>-X】創(chuàng)建工程

    鴻蒙ArkUI-X跨平臺(tái)技術(shù):【開(kāi)發(fā)準(zhǔn)備】

    本文檔適用于ArkUI跨平臺(tái)應(yīng)用開(kāi)發(fā)的初學(xué)者。通過(guò)開(kāi)發(fā)環(huán)境搭建、應(yīng)用工程創(chuàng)建、編譯和運(yùn)行,熟悉ArkUI跨平臺(tái)應(yīng)用開(kāi)發(fā)基本流程。
    的頭像 發(fā)表于 05-24 10:40 ?658次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺(tái)技術(shù):【<b class='flag-5'>開(kāi)發(fā)</b>準(zhǔn)備】

    鴻蒙ArkUI-X跨平臺(tái)開(kāi)發(fā):【 編寫(xiě)第一個(gè)ArkUI-X應(yīng)用】

    通過(guò)構(gòu)建一個(gè)簡(jiǎn)單的ArkUI頁(yè)面跳轉(zhuǎn)示例,快速了解資源創(chuàng)建引用,路由代碼編寫(xiě)和UI布局編寫(xiě)等應(yīng)用開(kāi)發(fā)流程。
    的頭像 發(fā)表于 05-21 17:36 ?877次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI</b>-X跨平臺(tái)<b class='flag-5'>開(kāi)發(fā)</b>:【 編寫(xiě)第一個(gè)<b class='flag-5'>ArkUI</b>-X應(yīng)用】