• Home
Name Date Size #Lines LOC

..--

AppScope/12-May-2024-5450

entry/12-May-2024-1,5921,411

feature/12-May-2024-5,2494,938

hvigor/12-May-2024-88

libs/12-May-2024-

screenshots/device/12-May-2024-

.gitignoreD12-May-2024105 88

README_zh.mdD12-May-202411.2 KiB179123

build-profile.json5D12-May-20241.3 KiB5756

hvigorfile.jsD12-May-2024168 21

hvigorwD12-May-20241.4 KiB4928

hvigorw.batD12-May-20241.4 KiB5843

oh-package.json5D12-May-2024209 1111

ohosTest.mdD12-May-20241.6 KiB1311

README_zh.md

1# 购物示例应用
2
3### 介绍
4
5本示例展示在进场时加载进场动画,整体使用**Tabs**容器设计应用框架,通过**TabContent**组件设置分页面,在子页面中绘制界面。在详情页中通过
6**Video**组件加载视频资源,使用**CustomDialogController**弹窗选择位置信息,点击首页及购物车返回主页面。
7
8本示例使用[Tabs容器](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-tabs.md)
9实现通过页签进行内容视图切换。使用[自定义弹窗](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-custom-dialog-box.md)
10设置位置信息。使用[Swiper](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-swiper.md)
11组件实现页面展示图轮播。使用[Grid](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-grid.md)
12容器组件设置展示的商品信息。
13
14本示例用到了延迟任务回调能力接口[@ohos.WorkSchedulerExtensionAbility](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-backgroundtasks-kit/js-apis-WorkSchedulerExtensionAbility.md)15
16通知管理的能力接口[@ohos.notification](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-notification-kit/js-apis-notification.md)17
18HTTP数据请求能力接口[@ohos.net.http]( https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-network-kit/js-apis-http.md)19
20媒体查询接口[@system.mediaquery](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-mediaquery.md)21
22管理窗口能力接口[@ohos.window](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-window.md)23
24### 效果预览
25
26![](screenshots/device/shopping.gif)
27
28使用说明:
29
301、启动应用进入进场动画,然后进入首页的时候会有升级弹窗的提示,判断应用需不需要升级,整个应用分四部分,首页、新品、购物车、我的。可以点击进行切换。
31
322、“首页”页面具有扫一扫功能、搜索框、轮播图、tabs、商品列表。
33
343、“首页”页面的扫一扫点击可以进行二维码扫描,点击商品可以跳转到详情页。
35
364、“商品详情页”上部分是视频,点击视频进行播放,也可以点击进入全屏模式,向下滑动详情页视频可以变成小窗口模式。点击右侧悬浮的直播按钮,可进入直播页面,直播页面可进行视频播放。
37
385.“商品详情页”有个分享功能,点击可进行分享。点击选择收货地址可弹出选择地址的选项,可进行选择地址。
39
406.断开网络链接,“商品详情页”中点击降价通知后,重新连接网络后通知栏有降价通知。
41
427.新品、购物车、我的目前是静态页面。
43
44### 工程目录
45
46```
47OrangeShopping
48├── AppScope
49│   └── app.json5                               // APP信息配置文件
50├── entry/src/main                              // 商品主页
51│   ├── ets
52│   │   ├── Application
53│   │   ├── Mainmability                        // 应用入口,在应用创建时进行必要的权限判断
54│   │   ├── pages
55│   │   │   ├── Index.ets                       // 首页的入口,首页加载页面(可点击跳过)
56│   │   │   ├── Detail.ets                      // 商品详情页
57│   │   │   ├── FullPage.ets                    // 商品详情页内的视频组件
58│   │   │   ├── Home.ets                        // 首页
59│   │   │   ├── LivePage.ets                    // 直播页
60│   │   │   ├── ScanPage.ets                    // 二维码扫描组件
61│   │   │   └── Setting.ets                     // 封装http请求页
62│   │   ├── utils
63│   │   │   ├── RouterUtil.ets                  // 路由跳转配置
64│   │   └── WorkAbility
65│   │       └── WorkAbility.ts
66│   ├── module.json5                            // Module的基本配置信息,应用运行过程中所需的权限信息。
67│   ├── resources/base
68│   │   ├── element                             // 文字信息列表
69│   │   ├── profile                             // 全局路由配置
70│   │   └── media                               // icon图片
71├── feature/detailPage/src/main                 // 商品主页
72│   ├── ets
73│   │   ├── mock                                // mock的数据
74│   │   ├── components                          // 组件模块
75│   │   └── main                                // 商品详情页模块
76├── feature/emitter/src/main
77│   ├── ets
78│   │   └── components                          // 订阅购物车模块
79├── feature/navigationHome/src/main
80│   ├── ets
81│   │   ├── good                                // 商品模块
82│   │   ├── home                                // 首页模块
83│   │   ├── user                                // 用户模块
84│   │   └── shoppingCart                        // 商品购物车模块
85```
86
87### 具体实现
88
891.应用创建时进行必要的权限判断:在[app.json5](entry/src/main/ets/MainAbility/MainAbility.ts )
90文件中对```"requestPermission"```对象进行权限匹配。如果有如果权限列表中有-1,说明用户拒绝了授权。
91
922.配置Module信息:
93
94* 在[module.json5]( entry/src/main/module.json5 )文件中配置```"extensionAbilities"```字段
95* 在```"requestPermissions"```标签中添加需要开的权限,例如使用相机拍摄照片和录制视频权限: "name": "
96  ohos.permission.CAMERA"
97
983.页面跳转: 通过在profile/main_pages.json中先配置好相关路由,并通过router.push()
99进行页面跳转,例如:跳转到搜索页面router.push({ url: 'pages/Detail' })。
100
1014.多屏监听:在首页加载时会通过mediaquery.matchMediaSync()监听当前屏幕尺寸curBp=[sm代表小屏,md代表中屏,lg代表大屏]
102,并将当前值存储到Appstorage里,通过AppStorage.SetOrCreate('curBp', this.curBp)。
103
1045.响应式渲染:通过全局的UI状态AppStorage存储,绑定了appstorage的数据会进行响应式屏幕尺寸渲染。
105
1066.订阅购物车事件:以持久化方式订阅并接收事件回调,持续订阅发布事件。通过emitter.emit(addToShoppingCartId,
107shoppingCartData)。[源码参考](feature/emitter/src/main/ets/components/feature/EmitterClass.ets) 。
108
109### 相关权限
110
111允许使用Internet网络: [ohos.permission.INTERNET](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet)
112
113允许应用控制马达振动:[ohos.permission.VIBRATE](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionvibrate)
114
115允许应用使用相机拍摄照片和录制视频:[ohos.permission.CAMERA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioncamera)
116
117允许应用获取设备位置信息:[ohos.permission.LOCATION](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionlocation)
118
119允许应用在后台运行时获取设备位置信息:[ohos.permission.LOCATION_IN_BACKGROUND](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionlocation_in_background)
120
121允许应用截取屏幕图像 :[ohos.permission.CAPTURE_SCREEN ](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md#ohospermissioncapture_screen)
122
123允许应用读取用户外部存储中的媒体文件信息:[ohos.permission.READ_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionread_media)
124
125允许应用访问用户媒体文件中的地理位置信息 :[ohos.permission.MEDIA_LOCATION](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionmedia_location)
126
127允许应用读写用户外部存储中的媒体文件信息 :[ohos.permission.WRITE_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionwrite_media)
128
129### 依赖
130
131[数据请求](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Connectivity/Http)
132本示例的网络配置服务依赖此示例。
133
134[位置服务](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/DeviceManagement/Location)
135本示例的详情页中的位置服务功能依赖此示例。
136
137[媒体库视频](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/VideoShow)
138本示例的详情页中的视频功能依赖此示例。
139
140[分享](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/ApplicationModels/CustomShare)
141本示例的详情页中的分享功能依赖此示例。
142
143[事件通知](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Notification/CustomNotification)
144本示例详情页中的降价通知功能依赖此示例。
145
146[扫一扫](https://gitee.com/openharmony/applications_app_samples/tree/master/code/BasicFeature/Media/QRCodeScan)
147本示首页中的扫码功能依赖此示例。
148
149### 约束与限制
150
1511.本示例仅支持标准系统上运行,支持设备:RK3568。
152
1532.本示例已适配API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release)。
154
1553.本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。
156
1574.本示例需要使用系统权限的接口。使用Full SDK时需要手动从镜像站点获取,并在DevEco
158Studio中替换,具体操作可参考[替换指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/faqs/full-sdk-switch-guide.md)159
1605.本示例需联网运行。
161
1626.弹窗升级需配置服务器后触发。
163
1647.本示例所配置的权限ohos.permission.CAPTURE_SCREEN为system_core级别(
165相关权限级别可通过[权限定义列表](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-system-apps.md)
166查看),需要手动配置对应级别的权限签名(
167具体操作可查看[自动化签名方案](https://docs.openharmony.cn/pages/v4.0/zh-cn/application-dev/security/hapsigntool-overview.md/)168
169### 下载
170
171如需单独下载本工程,执行如下命令:
172
173````
174git init
175git config core.sparsecheckout true
176echo code/Solutions/Shopping/OrangeShopping/ > .git/info/sparse-checkout
177git remote add origin https://gitee.com/openharmony/applications_app_samples.git
178git pull origin master
179````