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

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

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

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

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-05-21 17:36 ? 次閱讀

使用ArkTS語言開發(fā)(Stage模型)

說明:
開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔:[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
請(qǐng)使用DevEco Studio 4.0 Beta2及更高版本。如果使用其它版本,可能存在文檔與產(chǎn)品功能界面、操作不一致的情況,請(qǐng)以實(shí)際功能界面為準(zhǔn)。

應(yīng)用介紹

通過構(gòu)建一個(gè)簡(jiǎn)單的ArkUI頁面跳轉(zhuǎn)示例,快速了解資源創(chuàng)建引用,路由代碼編寫和UI布局編寫等應(yīng)用開發(fā)流程。

導(dǎo)入應(yīng)用模板

  • 通過Import Samples導(dǎo)入helloworld工程。

ArkTS工程目錄結(jié)構(gòu)(Stage模型)

zh-cn_image_0000001364054489

  • AppScope > app.json5 :應(yīng)用的全局配置信息
  • entryOpenHarmony工程模塊,編譯構(gòu)建生成一個(gè)HAP包。
    • build :用于存放OpenHarmony編譯生成的hap包。
    • src > main > ets :用于存放ArkTS源碼。
    • src > main > ets > entryability :應(yīng)用/服務(wù)的入口。
    • src > main > ets > pages :應(yīng)用/服務(wù)包含的頁面。
    • src > main > resources :用于存放應(yīng)用/服務(wù)所用到的資源文件,如圖形、多媒體、字符串、布局文件等。
    • src > main > module.json5 :模塊配置文件。主要包含HAP包的配置信息、應(yīng)用/服務(wù)在具體設(shè)備上的配置信息以及應(yīng)用/服務(wù)的全局配置信息。
    • build-profile.json5 :當(dāng)前的模塊信息 、編譯信息配置項(xiàng),包括buildOption、targets配置等。
    • hvigorfile.ts :模塊級(jí)編譯構(gòu)建任務(wù)腳本,開發(fā)者可以自定義相關(guān)任務(wù)和代碼實(shí)現(xiàn)。
  • oh_modules :用于存放三方庫依賴信息。
  • build-profile.json5 :應(yīng)用級(jí)配置信息,包括簽名signingConfigs、產(chǎn)品配置products等。
  • hvigorfile.ts :應(yīng)用級(jí)編譯構(gòu)建任務(wù)腳本。

編寫代碼

在上述工程創(chuàng)建完成后,開發(fā)者可在項(xiàng)目中的entry目錄下進(jìn)行代碼開發(fā)。

構(gòu)建第一個(gè)頁面

創(chuàng)建第一個(gè)頁面。

1.在第一個(gè)頁面添加Text組件、Button組件等,并設(shè)置其樣式。

  • 工程同步完成后,在“ Project ”窗口,點(diǎn)擊“ entry > src > main > ets > pages ”,打開“ Index.ets ”文件,可以看到頁面由Image,Button組件組成?!?Index.ets ”文件的示例如下:
    // index.ets
     @Entry
     @Component
     struct Index {
       build() {
         Row() {
           Column() {
             Text()
               .fontSize(50)
               .fontWeight(FontWeight.Bold)
             // 添加按鈕,以響應(yīng)用戶點(diǎn)擊
             Button() {
               Text()
                 .fontSize(30)
                 .fontWeight(FontWeight.Bold)
             }
             .type(ButtonType.Capsule)
             .margin({
               top: 20
             })
             .backgroundColor()
             .width('40%')
             .height('5%')
           }
           .width('100%')
         }
         .height('100%')
       }
     }
    

構(gòu)建第二個(gè)頁面

  1. 創(chuàng)建第二個(gè)頁面。
    • 新建第二個(gè)頁面文件。在“ Project ”窗口,打開“ entry > src > main > ets ”,右鍵點(diǎn)擊“ pages ”文件夾,
      newPage
    • 新建的頁面命名為“ Second ”,點(diǎn)擊“ Finish ”。
      newPageDetail
    • 可以看到文件目錄結(jié)構(gòu)如下:
      secondPage
  2. 添加文本及按鈕。
    參照第一個(gè)頁面,在第二個(gè)頁面添加Text組件、Button組件等,并設(shè)置其樣式?!?Second.ets ”文件的示例如下:
    // second.ets
     @Entry
     @Component
     struct Second {
         build() {
           Row() {
             Column() {
               Text()
                 .fontSize(50)
                 .fontWeight(FontWeight.Bold)
               Button() {
                 Text()
                   .fontSize(25)
                   .fontWeight(FontWeight.Bold)
               }
               .type(ButtonType.Capsule)
               .margin({
                 top: 20
               })
               .backgroundColor()
               .width('40%')
               .height('5%')
             }
             .width('100%')
           }
           .height('100%')
         }
     }
    

引用資源

1.定義需要被引用的文字資源:在“ Project ”窗口,點(diǎn)擊“ entry > src > main > resources > base > element > string.json ”,打開“ string.json ”文件,加入藍(lán)框的文字資源,如下圖展示:

ResourceStringReference

  • 引用文字資源:在 Text() 中用 $r('app.string.xx') 的方式引用文字資源。

2.定義需要被引用的顏色資源:在“ Project ”窗口,點(diǎn)擊“ entry > src > main > resources > base > element > color.json ”,打開“ color.json ”文件,加入藍(lán)框的顏色資源,如下圖展示:

ResourceColorReference

  • 引用顏色資源:在 Button(){}.backgroundColor() 中用 $r('app.color.xx') 的方式引用顏色資源。

3.“ Index.ets ”文件的示例如下:

// index.ets
 @Entry
 @Component
 struct Index {
     build() {
       Row() {
         Column() {
           //引用文字資源
           Text($r('app.string.homePage_Text'))
             .fontSize(50)
             .fontWeight(FontWeight.Bold)
           Button() {
             //引用文字資源
             Text($r('app.string.homeClick_value'))
                 .fontSize(30)
                 .fontWeight(FontWeight.Bold)
           }
           .type(ButtonType.Capsule)
           .margin({
             top: 20
           })
           //引用顏色資源
           .backgroundColor($r('app.color.btn_background'))
           .width('40%')
           .height('5%')
         }
         .width('100%')
       }
       .height('100%')
     }
 }

4.“ Second.ets ”文件的示例如下:

// second.ets
 @Entry
 @Component
 struct Second {
     build() {
       Row() {
         Column() {
           //引用文字資源
           Text($r('app.string.secondPage_Text'))
             .fontSize(50)
             .fontWeight(FontWeight.Bold)
           Button() {
             //引用文字資源
             Text($r('app.string.secondClick_value'))
               .fontSize(25)
               .fontWeight(FontWeight.Bold)
           }
           .type(ButtonType.Capsule)
           .margin({
             top: 20
           })
           //引用顏色資源
           .backgroundColor($r('app.color.btn_background'))
           .width('40%')
           .height('5%')
         }
         .width('100%')
       }
       .height('100%')
     }
 }

實(shí)現(xiàn)頁面間的跳轉(zhuǎn)

頁面間的導(dǎo)航可以通過[頁面路由router]接口來實(shí)現(xiàn)。頁面路由router根據(jù)頁面url找到目標(biāo)頁面,從而實(shí)現(xiàn)跳轉(zhuǎn)。使用頁面路由請(qǐng)導(dǎo)入router模塊。

  1. 第一個(gè)頁面跳轉(zhuǎn)到第二個(gè)頁面。
    在第一個(gè)頁面中,跳轉(zhuǎn)按鈕綁定onClick事件,點(diǎn)擊按鈕時(shí)跳轉(zhuǎn)到第二頁?!?index.ets ”文件的示例如下:
    // index.ets
    import router from '@ohos.router';
    
    @Entry
    @Component
    struct Index {
      build() {
        Row() {
          Column() {
            Text($r('app.string.homePage_Text'))
              .fontSize(50)
              .fontWeight(FontWeight.Bold)
            // 添加按鈕,以響應(yīng)用戶點(diǎn)擊
            Button() {
              Text($r('app.string.homeClick_value'))
                .fontSize(30)
                .fontWeight(FontWeight.Bold)
            }
            .type(ButtonType.Capsule)
            .margin({
              top: 20
            })
            .backgroundColor($r('app.color.btn_background'))
            .width('40%')
            .height('5%')
            // 跳轉(zhuǎn)按鈕綁定onClick事件,點(diǎn)擊時(shí)跳轉(zhuǎn)到第二頁
            .onClick(() = > {
              router.pushUrl({ url: 'pages/Second' })
            })
          }
          .width('100%')
        }
        .height('100%')
      }
    }
    
  2. 第二個(gè)頁面返回到第一個(gè)頁面。
    在第二個(gè)頁面中,返回按鈕綁定onClick事件,點(diǎn)擊按鈕時(shí)返回到第一頁?!?second.ets ”文件的示例如下:
    // second.ets
    import router from '@ohos.router';
    
    @Entry
    @Component
    struct Second {
        build() {
          Row() {
            Column() {
              Text($r('app.string.secondPage_Text'))
                .fontSize(50)
                .fontWeight(FontWeight.Bold)
              Button() {
                Text($r('app.string.secondClick_value'))
                  .fontSize(25)
                  .fontWeight(FontWeight.Bold)
              }
              .type(ButtonType.Capsule)
              .margin({
                top: 20
              })
              .backgroundColor($r('app.color.btn_background'))
              .width('40%')
              .height('5%')
              // 跳轉(zhuǎn)按鈕綁定onClick事件,點(diǎn)擊按鈕時(shí)返回到第一頁
              .onClick(() = > {
                router.back()
              })
            }
            .width('100%')
          }
          .height('100%')
        }
    }
    

3.無需手動(dòng)配置新增的第二個(gè)頁面路由:由于我們選擇了用New >Page的方式新建頁面,路由表里會(huì)自動(dòng)配置新增的頁面路由。
在“ Project ”窗口,打開“ entry > src > main > resources > base > profile ”,在main_pages.json文件中的“src”下自動(dòng)配置的第二個(gè)頁面的路由“pages/Second”,示例如下:

{
     "src": [
       "pages/Index",
       "pages/Second"
     ]
   }

使用真機(jī)運(yùn)行應(yīng)用

HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿

搜狗高速瀏覽器截圖20240326151547.png

  1. 將搭載OpenHarmony標(biāo)準(zhǔn)系統(tǒng)的開發(fā)板與電腦連接。
  2. 點(diǎn)擊File > Project Structure... > Project > SigningConfigs界面勾選“ Automatically generate signature ”,等待自動(dòng)簽名完成即可,點(diǎn)擊“ OK ”。如下圖所示:
    signConfig
  3. 編譯的[詳細(xì)步驟]。
  4. 效果如下圖所示:

image.png

  • iOS平臺(tái)展示效果

image.png

  • OpenHarmomy平臺(tái)展示效果

image.png

恭喜您已經(jīng)使用ArkTS語言開發(fā)(Stage模型)完成了第一個(gè)ArkUI跨平臺(tái)應(yīng)用。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2352

    瀏覽量

    42859
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙開發(fā)學(xué)習(xí):初探【ArkUI-X

    **簡(jiǎn)單來說,ArkTS + ArkUI-X 對(duì)標(biāo)的框架為 flutter,次代碼,編譯為 native 全平臺(tái)運(yùn)行**
    的頭像 發(fā)表于 05-13 15:58 ?1039次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發(fā)</b>學(xué)習(xí):初探【<b class='flag-5'>ArkUI-X</b>】

    鴻蒙ArkUI-X平臺(tái)開發(fā):【命令行工具(ACE Tools)】

    ACE Tools是套為ArkUI-X項(xiàng)目平臺(tái)應(yīng)用開發(fā)者提供的命令行工具,支持在Windows/Ubuntu/macOS
    的頭像 發(fā)表于 05-21 17:39 ?1788次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>開發(fā)</b>:【命令行工具(ACE Tools)】

    鴻蒙ArkUI-X平臺(tái)開發(fā):【SDK目錄結(jié)構(gòu)介紹】

    本文檔配套ArkUI-X,將OpenHarmony ArkUI開發(fā)框架擴(kuò)展到不同的OS平臺(tái),比如Android和iOS平臺(tái),讓
    的頭像 發(fā)表于 05-20 16:28 ?819次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>開發(fā)</b>:【SDK目錄結(jié)構(gòu)介紹】

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

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

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

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

    ArkUI-X開發(fā)指南:【SDK配置和構(gòu)建說明】

    ArkUI-X SDK是ArkUI-X開源項(xiàng)目的編譯產(chǎn)物,可將ArkUI-X SDK集成到現(xiàn)有Android和iOS應(yīng)用工程中,使開發(fā)者基于
    的頭像 發(fā)表于 05-25 16:48 ?2612次閱讀
    <b class='flag-5'>ArkUI-X</b><b class='flag-5'>開發(fā)</b>指南:【SDK配置和構(gòu)建說明】

    資訊速遞 | ArkUI-X 預(yù)覽版已正式開源!

    較高。使用ArkUI-X平臺(tái)項(xiàng)目后,復(fù)雜單品詳情頁代碼編寫支持運(yùn)行到Android、iOS和HarmonyOS(OpenHarmony
    發(fā)表于 08-11 16:10

    資訊速遞 | ArkUI-X 預(yù)覽版已正式開源!

    OpenHarmony項(xiàng)目群技術(shù)指導(dǎo)委員會(huì)(以下簡(jiǎn)稱“TSC”)-平臺(tái)應(yīng)用開發(fā)框架TSG所孵化項(xiàng)目 —— ArkUI-X,近期已正式開源 ,開發(fā)
    的頭像 發(fā)表于 08-22 22:19 ?835次閱讀
    資訊速遞 | <b class='flag-5'>ArkUI-X</b> 預(yù)覽版已正式開源!

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

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

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

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

    鴻蒙ArkUI-X平臺(tái)技術(shù):【開發(fā)初體驗(yàn)】

    在DevEco Studio中導(dǎo)入ArkUI-X Sample,快速創(chuàng)建平臺(tái)工程。
    的頭像 發(fā)表于 05-17 15:54 ?645次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b>技術(shù):【<b class='flag-5'>開發(fā)</b>初體驗(yàn)】

    鴻蒙ArkUI-X平臺(tái)開發(fā):【 應(yīng)用工程結(jié)構(gòu)說明】

    本文檔配套ArkUI-X,將OpenHarmony ArkUI開發(fā)框架擴(kuò)展到不同的OS平臺(tái),比如Android和iOS平臺(tái),讓
    的頭像 發(fā)表于 05-19 21:05 ?592次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b><b class='flag-5'>平臺(tái)</b><b class='flag-5'>開發(fā)</b>:【 應(yīng)用工程結(jié)構(gòu)說明】

    鴻蒙ArkUI-X語言調(diào)用說明:【平臺(tái)橋接(@arkui-x.bridge)】

    平臺(tái)橋接用于客戶端(ArkUI)和平臺(tái)(Android或iOS)之間傳遞消息,即用于ArkUI平臺(tái)雙向數(shù)據(jù)傳遞、
    的頭像 發(fā)表于 05-21 15:09 ?748次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b>語言調(diào)用說明:【<b class='flag-5'>平臺(tái)</b>橋接(@<b class='flag-5'>arkui-x</b>.bridge)】

    鴻蒙ArkUI-X語言調(diào)用說明:平臺(tái)差異化【Android、ios動(dòng)態(tài)化】

    ArkUI-X支持動(dòng)態(tài)化,使用者可以根據(jù)自己需要?jiǎng)討B(tài)發(fā)布平臺(tái)內(nèi)容,從而使平臺(tái)部分和宿主應(yīng)用進(jìn)行解耦。
    的頭像 發(fā)表于 05-23 14:38 ?890次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b><b class='flag-5'>跨</b>語言調(diào)用說明:<b class='flag-5'>平臺(tái)</b>差異化【Android、ios動(dòng)態(tài)化】

    鴻蒙ArkUI-X框架開發(fā):【開發(fā)準(zhǔn)備】

    本文檔適用于ArkUI-X框架開發(fā)的初學(xué)者。通過環(huán)境搭建、代碼下載、代碼編譯、API擴(kuò)展和使用,快速了解平臺(tái)項(xiàng)目開發(fā)流程。
    的頭像 發(fā)表于 05-23 21:02 ?476次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>ArkUI-X</b>框架<b class='flag-5'>開發(fā)</b>:【<b class='flag-5'>開發(fā)</b>準(zhǔn)備】