0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发实战-运动app开发

jf_46214456 来源: jf_46214456 作者: jf_46214456 2024-02-01 16:55 次阅读

主要开发内容

开发准备

想要实现以下功能的话,需要学习“Tabs”,“TabContent”,“Row”,“Column”,等等相关技术。

主页

静坐页面
除此之外,还需要先准备8张图标的图片以及应用开发所需要的图片。

tabs功能实现

应用中的Tabs功能通过采用了TabsController来实现。TabsController是一个在鸿蒙开发框架中用于管理Tabs的控制器,它负责处理Tabs之间的切换逻辑。以下是实现Tabs功能的关键代码部分:

// 定义TabsController实例
private controller: TabsController = new TabsController()
// ...
// 在build方法中使用Tabs组件,并传入controller
build() {
  Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
    Tabs({ controller: this.controller }) {
      // ...(省略Tabs中的内容)
    }
  }
}

在上述代码中,通过创建一个TabsController实例并赋值给controller成员变量,将该控制器传递给Tabs组件。Tabs组件会根据传入的控制器进行管理,从而实现Tabs之间的切换。

关于TabsController的具体使用,我们可以看到定义了多个方法,如IndexClick、messageClick、myClick和meClick等。这些方法分别用于处理不同Tabs的点击事件,并在点击时调用controller.changeIndex(index)来切换到对应的Tabs。通过TabsController的管理和控制,实现了在MyNewsIndex应用中不同Tabs之间的切换效果。用户点击不同的Tabs时,调用相应的方法切换到对应的内容,从而提供了用户友好的导航和浏览体验。Tabs功能的实现使得用户可以方便地切换到不同的运动分类或内容页面,增强了应用的可用性。

@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)

底部导航栏

通过Row和Column以及Text,Image等组件,实现了底部的导航栏。四个不同的图标分别代表主页、消息、我的、我,通过点击不同图标,用户可以快速切换到对应的页面,提升用户友好性。以下是参考代码:

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%')
  }
}

总结

本项目使用鸿蒙框架的代码结构清晰且容易理解。通过引入页面组件(zhu和jingzuo)以及使用装饰器(@Entry和@Component)来定义组件,代码使得组件的结构和布局一目了然,用户可以轻松切换到不同的运动分类,包括主页、精选等,还提供了用户友好的界面导航,使用户能够快速找到符合个人兴趣的运动内容,除此之外,本项目通过鸿蒙采用了灵活的Flex布局,确保在不同设备上都能够实现良好的自适应效果。

其次,鸿蒙框架提供了一系列的布局和样式管理工具,如Flex、Column、Tabs等,使得页面的布局和样式定义更加方便。这种灵活性使得开发者可以更容易地创建各种复杂的页面布局,同时保持代码的简洁性。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4719

    浏览量

    68210
  • 鸿蒙
    +关注

    关注

    57

    文章

    2301

    浏览量

    42681
收藏 人收藏

    评论

    相关推荐

    鸿蒙Flutter实战:08-如何调试代码

    # 鸿蒙Flutter实战:如何调试代码 ## 1.环境搭建 参考文章[鸿蒙Flutter实战:01-搭建开发环境](https://g
    发表于 10-23 16:29

    鸿蒙Flutter实战:07混合开发

    # 鸿蒙Flutter实战:混合开发 鸿蒙Flutter混合开发主要有两种形式。 ## 1.基于har 将flutter module
    发表于 10-23 16:00

    哪吒汽车APP启动鸿蒙原生应用开发

    哪吒汽车正式签约,启动鸿蒙原生应用开发;在5月17日,在上海市经济和信息化委员会指导的“千帆竞发启航 共筑鸿蒙生态——HDD上海站·鸿蒙原生应用专场”活动中哪吒汽车与华为签约启动
    的头像 发表于 05-18 09:48 1121次阅读

    鸿蒙开发就业前景到底怎么样?

    有帮助,我想邀请大家帮我三个小忙: 点赞,转发,有你们的 『点赞和评论』,才是我创造的动力。 关注小编,同时可以期待后续文章ing?,不定期分享原创知识。 更多鸿蒙最新技术知识点,请关注作者博客:鸿蒙实战经验分享:
    发表于 05-09 17:37

    36岁了还有必要转行鸿蒙开发吗?

    。 关注小编,同时可以期待后续文章ing?,不定期分享原创知识。 更多鸿蒙最新技术知识点,请关注作者博客:鸿蒙实战经验分享:鸿蒙基础入门开发
    发表于 05-09 17:01

    鸿蒙APP开发实战:【Api9】拍照、拍视频;选择图片、视频、文件工具类

    鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具类。
    的头像 发表于 03-26 16:27 704次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>APP</b><b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【Api9】拍照、拍视频;选择图片、视频、文件工具类

    鸿蒙ArkUI开发实战:eTS版【笑话app

    制作一款笑话app,使用ArkUI。
    的头像 发表于 03-25 16:04 407次阅读
    <b class='flag-5'>鸿蒙</b>ArkUI<b class='flag-5'>开发</b><b class='flag-5'>实战</b>:eTS版【笑话<b class='flag-5'>app</b>】

    鸿蒙实战项目开发:【短信服务】

    ://gitee.com/openharmony/applications_app_samples.git git pull origin master ​ 最后呢,很多开发朋友不知道需要学习那些鸿蒙技术?
    发表于 03-03 21:29

    使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

    随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro 发布了 v4.0.0-beta.x 版本,支持使用 Taro 快速开发鸿蒙原生应用,也可将现有的
    的头像 发表于 02-02 16:09 797次阅读
    使用 Taro <b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>原生应用 —— 快速上手,<b class='flag-5'>鸿蒙</b>应用<b class='flag-5'>开发</b>指南

    鸿蒙开发教程

    去年8 月份华为发布会上,华为发布了HarmonyOS NEXT预览版,宣布不再兼容安卓应用。大家期待的纯血鸿蒙终于要来临了,next 预览版本现在已经开放申请渠道了,Next 开发者预览版本目前只
    的头像 发表于 01-31 17:11 698次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>教程

    鸿蒙开发用什么语言?

    两种开发方向 我们常说鸿蒙开发,但是其实鸿蒙开发分为两个方向: 一个是系统级别的开发,比如驱动,
    的头像 发表于 01-30 16:12 1455次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>用什么语言?

    鸿蒙开发【设备开发基础知识】

    鸿蒙开发基础知识讲解
    的头像 发表于 01-29 18:44 911次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>【设备<b class='flag-5'>开发</b>基础知识】

    java后端能转鸿蒙app开发

    java后端转鸿蒙app开发好。 还是前端呢
    发表于 01-29 18:15

    鸿蒙ArkUI开发-Tabs组件的使用

    鸿蒙ArkUI开发-Tabs组件的使用
    的头像 发表于 01-19 16:01 1700次阅读
    <b class='flag-5'>鸿蒙</b>ArkUI<b class='flag-5'>开发</b>-Tabs组件的使用

    鸿蒙基础开发实战-(ArkTS)像素转换

    的使用。通过像素转换案例,向开发者讲解了如何使用像素单位设置组件的尺寸、字体的大小以及不同像素单位之间的转换方法。更多鸿蒙4.0的学习,可以前往主页学习或前往《鸿蒙4.0开发学习目录》
    发表于 01-11 16:53