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

1. 项目涉及知识点罗列

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

2. 项目目录结构介绍

在这里插入图片描述

3. 最终的效果图

在这里插入图片描述

4. 部分源码展示

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. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 11:06:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 11:06:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 11:06:02       82 阅读
  4. Python语言-面向对象

    2024-01-28 11:06:02       91 阅读

热门阅读

  1. RUST笔记: 动态链接库的创建和使用

    2024-01-28 11:06:02       69 阅读
  2. Springboot多数据源连接

    2024-01-28 11:06:02       70 阅读
  3. ValueConverters.NET

    2024-01-28 11:06:02       53 阅读
  4. 初识Cargo-Rust的包管理器

    2024-01-28 11:06:02       59 阅读
  5. 轻松将Word文档转换为PDF:R语言实战教程

    2024-01-28 11:06:02       59 阅读
  6. 面试 HTML 框架八股文十问十答第一期

    2024-01-28 11:06:02       70 阅读
  7. 300. 最长递增子序列(动态规划)

    2024-01-28 11:06:02       59 阅读
  8. 关系运算和逻辑运算

    2024-01-28 11:06:02       50 阅读
  9. 1.27学习总结

    2024-01-28 11:06:02       45 阅读
  10. 第八章 对象、类与面向对象编程 第四节——类

    2024-01-28 11:06:02       42 阅读