Skip to content

Latest commit

 

History

History

README.md

购物应用

介绍

运行部署本示例前,请先参阅跨平台应用改造指南以熟悉相关概念。

基于HarmonyOS Next的购物应用进行跨平台改造适配,主要用于呈现ArkUI-X框架的基本能力。基于自适应和响应式布局,实现一次开发,多端部署的购物应用。

效果预览

鸿蒙平台 Android平台 iOS平台

使用说明

  • 分别在Android、iOS、HarmonyOSNext安装并打开应用。应用启动后进入启动页,之后进入应用首页。
  • 点击底部首页、新品、购物车、我的图片文字按钮,切换显示对应的标签页,默认显示首页标签页。
  • 点击首页标签页或购物车标签页的商品列表,跳转到商品详情页。
  • 点击商品详情页的立即购买按钮,跳转到订单确认页。
  • 点击订单确认页的提交订单,跳转到订单支付页。
  • 点击我的标签页的我的订单栏的按钮,跳转到订单列表页。
  • 其他按钮无实际点击事件或功能。

工程目录

MultiShopping
├── .arkui-x
   ├── android					//Android 工程
   ├── ios						//iOS 工程
   └── arkui-x-config.json5
├── AppScope
   ├── app.json5
   └── resources
├── build-profile.json5
├── commons						// 公共能力层
   └── utils
       ├── build-profile.json5
       ├── hvigorfile.ts
       ├── index.ets
       ├── oh-package.json5
       └── src
           └── main
               ├── ets
                  ├── components
                     ├── CommodityList.ets	
                     ├── CounterProduct.ets	
                     └── EmptyComponent.ets	
                  ├── constants
                     ├── BreakpointConstants.ets  
                     ├── GridConstants.ets		
                     ├── PageConstants.ets
                     └── StyleConstants.ets
                  ├── utils
                     ├── BreakpointSystem.ets
                     ├── CommonDataSource.ets
                     ├── LocalDataManager.ets
                     ├── Logger.ets
                     ├── PlatformInfo.ets			//平台区分能力
                     └── Utils.ets
                  └── viewmodel
                      ├── CommodityModel.ets
                      ├── MainPageData.ets
                      ├── OrderModel.ets
                      ├── ProductModel.ets
                      └── ShopData.ets
               ├── module.json5
               └── resources
├── features
   ├── home
      ├── build-profile.json5
      ├── hvigorfile.ts
      ├── index.ets
      ├── oh-package.json5
      └── src
          └── main
              ├── ets
                 ├── components
                    └── Home.ets
                 └── viewmodel
                     └── HomeData.ets
              ├── module.json5
              └── resources
   ├── newproduct
      ├── build-profile.json5
      ├── hvigorfile.ts
      ├── index.ets
      ├── oh-package.json5
      └── src
          └── main
              ├── ets
                 ├── components
                    └── NewProduct.ets
                 └── viewmodel
                     └── NewProductData.ets
              ├── module.json5
   ├── orderdetail
      ├── build-profile.json5
      ├── hvigorfile.ts
      ├── index.ets
      ├── oh-package.json5
      └── src
          └── main
              ├── ets
                 ├── components
                    ├── AddressInfo.ets
                    ├── CapsuleGroupButton.ets
                    ├── CommodityDetail.ets
                    ├── CommodityOrderItem.ets
                    ├── CommodityOrderList.ets
                    ├── ConfirmOrder.ets
                    ├── HeaderBar.ets
                    ├── OrderDetailList.ets
                    ├── OrderListContent.ets
                    ├── PayOrder.ets
                    └── SpecificationDialog.ets
                 ├── constants
                    ├── CommodityConstants.ets
                    └── OrderDetailConstants.ets
                 ├── viewmodel
                    ├── CommodityDetailData.ets
                    ├── OrderData.ets
                    └── TypeModel.ets
                 └── views
                     ├── CommodityDetailPage.ets
                     ├── ConfirmOrderPage.ets
                     ├── OrderDetailListPage.ets
                     └── PayOrderPage.ets
              ├── module.json5
              └── resources
   ├── personal
      ├── build-profile.json5
      ├── hvigorfile.ts
      ├── index.ets
      ├── oh-package.json5
      └── src
          └── main
              ├── ets
                 ├── components
                    ├── IconButton.ets
                    ├── LiveList.ets
                    └── Personal.ets
                 ├── constants
                    └── PersonalConstants.ets
                 └── viewmodel
                     ├── IconButtonModel.ets
                     └── PersonalData.ets
              ├── module.json5
              └── resources
   └── shopcart
       ├── build-profile.json5
       ├── hvigorfile.ts
       ├── index.ets
       ├── oh-package.json5
       └── src
           └── main
               ├── ets
                  ├── components
                     └── ShopCart.ets
                  └── constants
                      └── ShopCartConstants.ets
               ├── module.json5
               └── resources
├── hvigor
   ├── hvigor-config.json5
   └── hvigor-wrapper.js
├── hvigorfile.ts
├── oh-package.json5
├── products
   └── phone
       ├── build-profile.json5
       ├── hvigorfile.ts
       ├── obfuscation-rules.txt
       ├── oh-package.json5
       └── src
           └── main
               ├── ets
                  ├── entryability
                     └── EntryAbility.ets
                  └── pages
                      ├── MainPage.ets			 // 主页
                      └── SplashPage.ets			 // 启动过渡页
               ├── module.json5
               └── resources
├── README.md
└── screenshots

具体实现

应用整体结构分为3层,commons为公共能力层,features为功能模块层,products则为产品层。

  • 应用启动后首先进入启动页,然后进入应用主页
    • 启动页SplashPage.ets
      • 在工程pages目录中,选中Index.ets,点击鼠标右键 > Refactor > Rename,改名为SplashPage.ets。
      • 改名后,修改工程entryability目录下EntryAbility.ets文件中windowStage.loadContent方法第一个参数为pages/SplashPage。
      • 在该页面的周期函数aboutToAppear里添加一个2秒的定时任务跳转到主页实现。
    • 主页MainPage.ets
      • 主页由Tabs容器组件和四个TabContent子组件组成,四个TabContent页签的内容视图分别为首页(Home)、新品(NewProduct)、购物车(ShopCart)、我的(Personal)。
      • 根据用户使用场景,通过响应式布局的媒体查询,监听应用窗口宽度变化,获取当前应用所处的断点值。
    • 首页标签页通过自适应布局的均分、拉伸等能力实现搜索框、分类等布局,通过响应式布局的媒体查询、断点能力设置轮播图数、商品列表数。
    • 购物车标签页,由购物车列表和商品列表组成,商品列表实现逻辑同主页的商品列表,购物车列表使用自适应布局的均分能力实现。
    • 我的标签页主要由个人信息、我的订单、文字图片按钮、直播列表组成,直播列表实现方案同主页商品列表,其他则使用自适应布局的均分能力,Flex布局设置主轴上的对齐方式为FlexAlign.SpaceAround。

相关权限

不涉及。

依赖

不涉及

约束与限制

1.本示例仅支持标准Android/iOS/鸿蒙系统上运行。

2.本示例已适配API version 16及以上版本的ArkUI-X SDK。

3.本示例需要使用DevEco Studio 5.0.4 Release及以上版本才可编译运行。

4.本示例需要修改使用的DevEco Studio相关SDK的配置项,详见关于deveco-studio编译时报错问题解决

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo /CodeLab/MultiShopping > .git/info/sparse-checkout
git remote add origin https://gitcode.com/arkui-x/samples.git
git pull origin master