第十八讲_HarmonyOS应用开发实战(实现电商首页)

HarmonyOS应用开发实战(实现电商首页)

  • [1. 项目涉及知识点罗列](#1. 项目涉及知识点罗列)
  • [2. 项目目录结构介绍](#2. 项目目录结构介绍)
  • [3. 最终的效果图](#3. 最终的效果图)
  • [4. 部分源码展示](#4. 部分源码展示)

1. 项目涉及知识点罗列

  • 掌握HUAWEI DevEco Studio开发工具
  • 掌握创建HarmonyOS应用工程
  • 掌握ArkUI自定义组件
  • 掌握@Entry@Component@Builder等装饰器
  • 掌握@State@Link等状态管理装饰器
  • 掌握ColumnRowFlexListTextImageTabsScroll等系统组件
  • 掌握资源的定义和应用

2. 项目目录结构介绍

3. 最终的效果图

4. 部分源码展示

typescript 复制代码
import Home from '../components/Home';
import { MainPageConstants } from '../constants/MainPageConstants';
import { TabBarData, tabBarData } from '../viewmodel/MainPageData';

/*
* 电商主页
*/
@Entry
@Component
struct MainPage {
  @State currentIndex: number = 0;

  // 自定义底部导航图标
  @Builder TabBar(tabBarData: TabBarData) {
    Column({space: MainPageConstants.TAB_SPACE}) {
      Image(this.currentIndex === tabBarData.index ? tabBarData.selectImg : tabBarData.img)
        .height($r('app.float.main_page_tab_image_size'))
        .width($r('app.float.main_page_tab_image_size'))
      Text(tabBarData.title)
        .fontSize($r('app.float.main_page_tab_title_size'))
        .fontColor(this.currentIndex === tabBarData.index ? $r('app.color.main_page_tar_title_select_color') : Color.Black)
    }
  }

  build() {
    Tabs({
      index: this.currentIndex,
      barPosition: BarPosition.End
    }) {
      // 首页
      TabContent() {
        Home()
      }
      .tabBar(this.TabBar(tabBarData[0]))

      // 新品
      TabContent() {
        Column() {
          Text($r('app.string.main_page_tab_product'))
            .fontSize($r('app.float.product_page_text_size'))
        }
        .height(MainPageConstants.FULL_HEIGHT)
        .width(MainPageConstants.FULL_WIDTH)
        .justifyContent(FlexAlign.Center)
      }
      .tabBar(this.TabBar(tabBarData[1]))

      // 购物车
      TabContent() {
        Column() {
          Text($r('app.string.main_page_tab_cart'))
            .fontSize($r('app.float.product_page_text_size'))
        }
        .height(MainPageConstants.FULL_HEIGHT)
        .width(MainPageConstants.FULL_WIDTH)
        .justifyContent(FlexAlign.Center)
      }
      .tabBar(this.TabBar(tabBarData[2]))

      // 我的
      TabContent() {
        Column() {
          Text($r('app.string.main_page_tab_personal'))
            .fontSize($r('app.float.product_page_text_size'))
        }
        .height(MainPageConstants.FULL_HEIGHT)
        .width(MainPageConstants.FULL_WIDTH)
        .justifyContent(FlexAlign.Center)
      }
      .tabBar(this.TabBar(tabBarData[3]))
    }
    .backgroundColor($r('app.color.main_page_background_color'))
    .onChange((index: number) => {
      this.currentIndex = index;
    })
  }
}

ps:需要完整源码的同学,可以在评论区留言!!!

相关推荐
橙露1 分钟前
React Hooks 深度解析:从基础使用到自定义 Hooks 的封装技巧
javascript·react.js·ecmascript
roman_日积跬步-终至千里3 分钟前
【Java并发】多线程/并发问题集
java·开发语言
调皮连续波(rsp_tiaopige)7 分钟前
毫米波雷达 : OpenRadar(Matlab版本)正式发布
开发语言·matlab
2501_9209317014 分钟前
React Native鸿蒙跨平台使用useState管理健康记录和过滤状态,支持多种健康数据类型(血压、体重等)并实现按类型过滤功能
javascript·react native·react.js·ecmascript·harmonyos
冷雨夜中漫步18 分钟前
python反转列表reverse()和[::-1]哪个效率更高
开发语言·python
rainbow688920 分钟前
Python面向对象编程与异常处理实战
开发语言·python
Ulyanov23 分钟前
从静态到沉浸:打造惊艳的Web技术发展历程3D时间轴
前端·javascript·html5·gui开发
2501_9219308327 分钟前
高级进阶 React Native 鸿蒙跨平台开发:InteractionManager 交互优化
react native·harmonyos
前端不太难41 分钟前
HarmonyOS PC 文档模型完整范式
华为·状态模式·harmonyos
你撅嘴真丑42 分钟前
第八章 - 贪心法
开发语言·c++·算法