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

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

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

鴻蒙開(kāi)發(fā)實(shí)戰(zhàn)-運(yùn)動(dòng)app開(kāi)發(fā)

jf_46214456 ? 來(lái)源: jf_46214456 ? 作者: jf_46214456 ? 2024-02-01 16:55 ? 次閱讀

主要開(kāi)發(fā)內(nèi)容

開(kāi)發(fā)準(zhǔn)備

想要實(shí)現(xiàn)以下功能的話,需要學(xué)習(xí)“Tabs”,“TabContent”,“Row”,“Column”,等等相關(guān)技術(shù)。

主頁(yè)

靜坐頁(yè)面
除此之外,還需要先準(zhǔn)備8張圖標(biāo)的圖片以及應(yīng)用開(kāi)發(fā)所需要的圖片。

tabs功能實(shí)現(xiàn)

應(yīng)用中的Tabs功能通過(guò)采用了TabsController來(lái)實(shí)現(xiàn)。TabsController是一個(gè)在鴻蒙開(kāi)發(fā)框架中用于管理Tabs的控制器,它負(fù)責(zé)處理Tabs之間的切換邏輯。以下是實(shí)現(xiàn)Tabs功能的關(guān)鍵代碼部分:

// 定義TabsController實(shí)例
private controller: TabsController = new TabsController()
// ...
// 在build方法中使用Tabs組件,并傳入controller
build() {
  Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
    Tabs({ controller: this.controller }) {
      // ...(省略Tabs中的內(nèi)容)
    }
  }
}

在上述代碼中,通過(guò)創(chuàng)建一個(gè)TabsController實(shí)例并賦值給controller成員變量,將該控制器傳遞給Tabs組件。Tabs組件會(huì)根據(jù)傳入的控制器進(jìn)行管理,從而實(shí)現(xiàn)Tabs之間的切換。

關(guān)于TabsController的具體使用,我們可以看到定義了多個(gè)方法,如IndexClick、messageClick、myClick和meClick等。這些方法分別用于處理不同Tabs的點(diǎn)擊事件,并在點(diǎn)擊時(shí)調(diào)用controller.changeIndex(index)來(lái)切換到對(duì)應(yīng)的Tabs。通過(guò)TabsController的管理和控制,實(shí)現(xiàn)了在MyNewsIndex應(yīng)用中不同Tabs之間的切換效果。用戶點(diǎn)擊不同的Tabs時(shí),調(diào)用相應(yīng)的方法切換到對(duì)應(yīng)的內(nèi)容,從而提供了用戶友好的導(dǎo)航和瀏覽體驗(yàn)。Tabs功能的實(shí)現(xiàn)使得用戶可以方便地切換到不同的運(yùn)動(dòng)分類或內(nèi)容頁(yè)面,增強(qiáng)了應(yīng)用的可用性。

@Entry
@Component
struct MyNewsIndex {
  private controller: TabsController = new TabsController()
  @State SelectPos:number=0;
  public IndexClick(){
    this.SelectPos=0;
    this.controller.changeIndex(0)
  }
  public messageClick(){
    this.SelectPos=1;
    this.controller.changeIndex(1)
  }
  public myClick(){
    this.SelectPos=2;
    this.controller.changeIndex(2)
  }
  public meClick(){
    this.SelectPos=3;
    this.controller.changeIndex(3)
  }

  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Tabs({ controller: this.controller }) {
        TabContent() {
          Column() {
            zhu()
          }

        }
        .tabBar()
        TabContent() {
          Column() {
            jingzuo()
          }

        }
        .tabBar()
        TabContent() {
          Text("我men的")
            .width('100%').height('100%')
            .fontSize(50)
            .textAlign(TextAlign.Center)
            .fontColor(Color.White)
            .backgroundColor(0X6495ED)
        }
        .tabBar()
        TabContent() {
          Text("我")
            .width('100%').height('100%')
            .fontSize(50)
            .textAlign(TextAlign.Center)
            .fontColor(Color.White)
            .backgroundColor(Color.Black)

        }
        .tabBar()
      }
      .scrollable(false)
      .barHeight(0)
      .animationDuration(0)

底部導(dǎo)航欄

通過(guò)Row和Column以及Text,Image等組件,實(shí)現(xiàn)了底部的導(dǎo)航欄。四個(gè)不同的圖標(biāo)分別代表主頁(yè)、消息、我的、我,通過(guò)點(diǎn)擊不同圖標(biāo),用戶可以快速切換到對(duì)應(yīng)的頁(yè)面,提升用戶友好性。以下是參考代碼:

Row() {
        Column(){
          Image((this.SelectPos==0?$r('app.media.yundong1'):$r('app.media.yundong')))
            .width(30)
            .height(30)
            .margin(12)

        }
        .layoutWeight(1)

        .height("100%")
        .onClick(this.IndexClick.bind(this))

        Column(){
          Image((this.SelectPos==1?$r('app.media.gangling1'):$r("app.media.gangling")))
            .width(35)
            .height(30)
            .margin(12)

        }
        .layoutWeight(1)

        .height("100%")
        .onClick(this.messageClick.bind(this))

        Column(){
          Image((this.SelectPos==2?$r('app.media.zhidao1'):$r('app.media.zhidao')))
            .width(30)
            .height(30)
            .margin(12)

        }
        .layoutWeight(1)

        .height("100%")
        .onClick(this.myClick.bind(this))

        Column(){
          Image((this.SelectPos==3?$r('app.media.me1'):$r('app.media.me')))
            .width(30)
            .height(30)
            .margin(12)
        }
        .layoutWeight(1)

        .height("100%")
        .onClick(this.meClick.bind(this))
      }
      .alignItems(VerticalAlign.Bottom)
      .width('100%')
      .height(50)
      .margin({top:0,right:0,bottom:10,left:0})
    }
    .width('100%')
    .height('100%')
  }
}

總結(jié)

本項(xiàng)目使用鴻蒙框架的代碼結(jié)構(gòu)清晰且容易理解。通過(guò)引入頁(yè)面組件(zhu和jingzuo)以及使用裝飾器(@Entry和@Component)來(lái)定義組件,代碼使得組件的結(jié)構(gòu)和布局一目了然,用戶可以輕松切換到不同的運(yùn)動(dòng)分類,包括主頁(yè)、精選等,還提供了用戶友好的界面導(dǎo)航,使用戶能夠快速找到符合個(gè)人興趣的運(yùn)動(dòng)內(nèi)容,除此之外,本項(xiàng)目通過(guò)鴻蒙采用了靈活的Flex布局,確保在不同設(shè)備上都能夠?qū)崿F(xiàn)良好的自適應(yīng)效果。

其次,鴻蒙框架提供了一系列的布局和樣式管理工具,如Flex、Column、Tabs等,使得頁(yè)面的布局和樣式定義更加方便。這種靈活性使得開(kāi)發(fā)者可以更容易地創(chuàng)建各種復(fù)雜的頁(yè)面布局,同時(shí)保持代碼的簡(jiǎn)潔性。

審核編輯 黃宇

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

    30

    文章

    4723

    瀏覽量

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

    關(guān)注

    57

    文章

    2303

    瀏覽量

    42693
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙Flutter實(shí)戰(zhàn):12-使用模擬器開(kāi)發(fā)調(diào)試

    前提 開(kāi)發(fā)電腦需為M系列芯片 (ARM架構(gòu)) 的 Mac 電腦 目前 Flutter 鴻蒙開(kāi)發(fā),無(wú)法使用 X86 架構(gòu)的模擬器,只能使用 ARM 架構(gòu)的模擬器** 創(chuàng)建項(xiàng)目 等開(kāi)發(fā)
    發(fā)表于 11-10 13:13

    鴻蒙Flutter實(shí)戰(zhàn):08-如何調(diào)試代碼

    # 鴻蒙Flutter實(shí)戰(zhàn):如何調(diào)試代碼 ## 1.環(huán)境搭建 參考文章[鴻蒙Flutter實(shí)戰(zhàn):01-搭建開(kāi)發(fā)環(huán)境](https://g
    發(fā)表于 10-23 16:29

    鴻蒙Flutter實(shí)戰(zhàn):07混合開(kāi)發(fā)

    # 鴻蒙Flutter實(shí)戰(zhàn):混合開(kāi)發(fā) 鴻蒙Flutter混合開(kāi)發(fā)主要有兩種形式。 ## 1.基于har 將flutter module
    發(fā)表于 10-23 16:00

    哪吒汽車(chē)APP啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā)

    哪吒汽車(chē)正式簽約,啟動(dòng)鴻蒙原生應(yīng)用開(kāi)發(fā);在5月17日,在上海市經(jīng)濟(jì)和信息化委員會(huì)指導(dǎo)的“千帆競(jìng)發(fā)啟航 共筑鴻蒙生態(tài)——HDD上海站·鴻蒙原生應(yīng)用專場(chǎng)”活動(dòng)中哪吒汽車(chē)與華為簽約啟動(dòng)
    的頭像 發(fā)表于 05-18 09:48 ?1125次閱讀

    鴻蒙開(kāi)發(fā)就業(yè)前景到底怎么樣?

    有幫助,我想邀請(qǐng)大家?guī)臀胰齻€(gè)小忙: 點(diǎn)贊,轉(zhuǎn)發(fā),有你們的 『點(diǎn)贊和評(píng)論』,才是我創(chuàng)造的動(dòng)力。 關(guān)注小編,同時(shí)可以期待后續(xù)文章ing?,不定期分享原創(chuàng)知識(shí)。 更多鴻蒙最新技術(shù)知識(shí)點(diǎn),請(qǐng)關(guān)注作者博客:鴻蒙實(shí)戰(zhàn)經(jīng)驗(yàn)分享:
    發(fā)表于 05-09 17:37

    36歲了還有必要轉(zhuǎn)行鴻蒙開(kāi)發(fā)嗎?

    。 關(guān)注小編,同時(shí)可以期待后續(xù)文章ing?,不定期分享原創(chuàng)知識(shí)。 更多鴻蒙最新技術(shù)知識(shí)點(diǎn),請(qǐng)關(guān)注作者博客:鴻蒙實(shí)戰(zhàn)經(jīng)驗(yàn)分享:鴻蒙基礎(chǔ)入門(mén)開(kāi)發(fā)
    發(fā)表于 05-09 17:01

    鴻蒙APP開(kāi)發(fā)實(shí)戰(zhàn):【Api9】拍照、拍視頻;選擇圖片、視頻、文件工具類

    鴻蒙開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)進(jìn)行系統(tǒng)調(diào)用,拍照、拍視頻、選擇圖庫(kù)圖片、選擇圖庫(kù)視頻、選擇文件。今天就給大家分享一個(gè)工具類。
    的頭像 發(fā)表于 03-26 16:27 ?710次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>APP</b><b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b>:【Api9】拍照、拍視頻;選擇圖片、視頻、文件工具類

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

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

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

    ://gitee.com/openharmony/applications_app_samples.git git pull origin master ? 最后呢,很多開(kāi)發(fā)朋友不知道需要學(xué)習(xí)那些鴻蒙技術(shù)?
    發(fā)表于 03-03 21:29

    使用 Taro 開(kāi)發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開(kāi)發(fā)指南

    隨著鴻蒙系統(tǒng)的不斷完善,許多應(yīng)用廠商都希望將自己的應(yīng)用移植到鴻蒙平臺(tái)上。最近,Taro 發(fā)布了 v4.0.0-beta.x 版本,支持使用 Taro 快速開(kāi)發(fā)鴻蒙原生應(yīng)用,也可將現(xiàn)有的
    的頭像 發(fā)表于 02-02 16:09 ?803次閱讀
    使用 Taro <b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>鴻蒙</b>原生應(yīng)用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>指南

    鴻蒙開(kāi)發(fā)教程

    去年8 月份華為發(fā)布會(huì)上,華為發(fā)布了HarmonyOS NEXT預(yù)覽版,宣布不再兼容安卓應(yīng)用。大家期待的純血鴻蒙終于要來(lái)臨了,next 預(yù)覽版本現(xiàn)在已經(jīng)開(kāi)放申請(qǐng)渠道了,Next 開(kāi)發(fā)者預(yù)覽版本目前只
    的頭像 發(fā)表于 01-31 17:11 ?706次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b>教程

    鴻蒙開(kāi)發(fā)用什么語(yǔ)言?

    兩種開(kāi)發(fā)方向 我們常說(shuō)鴻蒙開(kāi)發(fā),但是其實(shí)鴻蒙開(kāi)發(fā)分為兩個(gè)方向: 一個(gè)是系統(tǒng)級(jí)別的開(kāi)發(fā),比如驅(qū)動(dòng),
    的頭像 發(fā)表于 01-30 16:12 ?1461次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b>用什么語(yǔ)言?

    鴻蒙開(kāi)發(fā)【設(shè)備開(kāi)發(fā)基礎(chǔ)知識(shí)】

    鴻蒙開(kāi)發(fā)基礎(chǔ)知識(shí)講解
    的頭像 發(fā)表于 01-29 18:44 ?926次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b>【設(shè)備<b class='flag-5'>開(kāi)發(fā)</b>基礎(chǔ)知識(shí)】

    java后端能轉(zhuǎn)鴻蒙app開(kāi)發(fā)

    java后端轉(zhuǎn)鴻蒙app開(kāi)發(fā)好。 還是前端呢
    發(fā)表于 01-29 18:15

    鴻蒙基礎(chǔ)開(kāi)發(fā)實(shí)戰(zhàn)-(ArkTS)像素轉(zhuǎn)換

    的使用。通過(guò)像素轉(zhuǎn)換案例,向開(kāi)發(fā)者講解了如何使用像素單位設(shè)置組件的尺寸、字體的大小以及不同像素單位之間的轉(zhuǎn)換方法。更多鴻蒙4.0的學(xué)習(xí),可以前往主頁(yè)學(xué)習(xí)或前往《鴻蒙4.0開(kāi)發(fā)學(xué)習(xí)目錄》
    發(fā)表于 01-11 16:53