| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| AppScope/ | 22-Oct-2025 | - | 71 | 66 | ||
| common/ | 22-Oct-2025 | - | 1,340 | 1,228 | ||
| entry/ | 22-Oct-2025 | - | 842,424 | 756,419 | ||
| feature/ | 22-Oct-2025 | - | 179,205 | 173,459 | ||
| figures/ | 22-Oct-2025 | - | ||||
| hvigor/ | 22-Oct-2025 | - | 38 | 36 | ||
| .gitignore | D | 22-Oct-2025 | 133 | 12 | 12 | |
| README_zh.md | D | 22-Oct-2025 | 19.6 KiB | 228 | 205 | |
| build-profile.json5 | D | 22-Oct-2025 | 1.6 KiB | 74 | 73 | |
| hvigorfile.ts | D | 22-Oct-2025 | 843 | 22 | 5 | |
| oh-package-lock.json5 | D | 22-Oct-2025 | 1.5 KiB | 41 | 41 | |
| oh-package.json5 | D | 22-Oct-2025 | 834 | 26 | 24 |
README_zh.md
1# ArkUI exmaples app 2 3## 背景 4ArkUI是OpenHarmony的UI框架,方便使用者查看组件的效果,以保证原生组件的规范性与一致性。但是目前OpenHarmony社区缺少一个可以让使用者看到UI组件真机预览效果的应用软件。为此,需要设计开发一款ArkUI组件预览应用软件,该应用软件提供直观界面和强大功能,允许调整组件属性并即时预览效果。 5通过ArkUI组件预览应用软件的引入,将会提高使用者的工作效率,促进ArkUI UX标准化,推动UX规范持续进化,最终提升OpenHarmony应用的用户满意度。 6 7## 需求描述&功能描述 8### 需求描述 9- 参考[Docs](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/Readme-CN.md) ArkTS组件,分批次实现组件的UI效果预览功能 10- 实现每个组件的属性与事件设置功能,用户设置不同的属性或触发不同的事件,都可以实时在真机上预览到对应的UI效果 11- 普通组件需要预览的属性包含通用属性/组件属性/构造器参数 12- 高级组件需要预览的属性包含组件属性/构造器参数 13- 注册组件的事件,并将事件信息打印到UI界面 14- 系统接口不需要验证 15- 完成开发后,需要将代码合入到[arkui_ace_engin](https://gitee.com/openharmony/arkui_ace_engine/tree/master/examples/components) 16 17### 功能描述 18- 进入应用后,通过列表选择需要预览的组件 19- <img src="figures/app_page1.png" width="200" height="354"> 20- 进入组件预览页后,可以通过页面右上角按钮打开参数列表设置属性 21- <img src="figures/app_page2.png" width="200" height="354"> 22- 事件监听信息会打印到UI界面 23- <img src="figures/app_page3.png" width="200" height="354"> 24 25## 关键设计 26 27### 页面结构 28 29- 应用为单页面程序,使用Navigation+NavDestination完成组件列表和组件预览UI的展示 30 31### 属性Block 32- 在common中定义不同类型的属性block,统一组件属性设置项的UI风格 33 34## 模块设计 35 36### 模块设计 37 38 39 40ArkUI组件预览应用软件包含UI层,业务层,基础层: 41- UI层 42 - 主要页面:组件导航页,组件预览页 43 - 导航菜单:帮助用户迅速导航到需要预览调试的组件 44 - 组件预览:选择需要预览调试的组件后,将进入预览页,展示对应属性的组件真机效果,并提供弹窗,用户可以在弹窗上进行组件的属性设置 45- 基础层 46 - 公共组件:封装可复用的滑动进度条,选择器,复选框,单选框等自定义UI组件 47 - 公共资源:统一定义尺寸,颜色,图片资源等公共资源 48 - 提供字符串处理,日志,数据换算,资源管理等通用工具类 49 - 基础数据模块:封装包含ArkUI组件通用属性的数据基类 50- 业务层 51 - 应用软件根据ArkUI组件分类,定义6个业务模块 52 - 业务模块包含组件属性的数据对象 53 54### 组件信息 55- 行列与堆叠 56 - [Flex](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-flex.md) 57 - [Column](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-column.md) 58 - [Row](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-row.md) 59 - [Stack](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-stack.md) 60 - [RelativeContainer](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-relativecontainer.md) 61 - [FolderStack](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-folderstack.md) 62- 栅格与分栏 63 - [GridRow](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-gridrow.md) 64 - [GridCol](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-gridcol.md) 65 - [ColumnSplit](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-columnsplit.md) 66 - [RowSplit](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-rowsplit.md) 67 - [FoldSplitContainer](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-FoldSplitContainer.md) 68 - [SideBarContainer](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-sidebarcontainer.md) 69- 滚动与滑动 70 - [List](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-list.md) 71 - [ListItem](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-listitem.md) 72 - [ListItemGroup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-listitemgroup.md) 73 - [Grid](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-grid.md) 74 - [GridItem](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-griditem.md) 75 - [Scroll](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-scroll.md) 76 - [Swiper](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-swiper.md) 77 - [WaterFlow](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-waterflow.md) 78 - [FlowItem](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-flowitem.md) 79 - [ScrollBar](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-scrollbar.md) 80 - [Refresh](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-refresh.md) 81- 导航与切换 82 - [Navigation](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-navigation.md) 83 - [NavDestination](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-navdestination.md) 84 - [Stepper](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-stepper.md) 85 - [StepperItem](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-stepperitem.md) 86 - [Tabs](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-tabs.md) 87 - [TabContent](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-tabcontent.md) 88- 按钮与选择 89 - [Button](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-button.md) 90 - [Toggle](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-toggle.md) 91 - [Checkbox](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-checkbox.md) 92 - [CheckboxGroup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-checkboxgroup.md) 93 - [CalendarPicker](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-calendarpicker.md) 94 - [DatePicker](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-datepicker.md) 95 - [TextPicker](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-textpicker.md) 96 - [TimePicker](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-timepicker.md) 97 - [Radio](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-radio.md) 98 - [Rating](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-rating.md) 99 - [Select](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-select.md) 100 - [Slider](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-slider.md) 101 - [SegmentButton](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-SegmentButton.md) 102- 文本与输入 103 - [Text](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-text.md) 104 - [TextArea](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-textarea.md) 105 - [TextInput](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-textinput.md) 106 - [RichEditor](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-richeditor.md) 107 - [Search](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-search.md) 108 - [Span](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-span.md) 109 - [ImageSpan](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-imagespan.md) 110 - [ContainerSpan](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-containerspan.md) 111 - [SymbolSpan](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-symbolSpan.md) 112 - [SymbolGlyph](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-symbolGlyph.md) 113 - [Hyperlink](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-hyperlink.md) 114 - [SelectionMenu](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-SelectionMenu.md) 115- 图片与视频 116 - [Image](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-image.md) 117 - [ImageAnimator](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-imageanimator.md) 118- 信息展示 119 - [AlphabetIndexer](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-alphabet-indexer.md) 120 - [Badge](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-badge.md) 121 - [Chip](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-Chip.md) 122 - [ChipGroup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-ChipGroup.md) 123 - [Counter](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-container-counter.md) 124 - [advanced.Counter](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-Counter.md) 125 - [DataPanel](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-datapanel.md) 126 - [Gauge](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-gauge.md) 127 - [LoadingProgress](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-loadingprogress.md) 128 - [Marquee](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-marquee.md) 129 - [PatternLock](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-patternlock.md) 130 - [Progress](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-progress.md) 131 - [Popup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ohos-arkui-advanced-Popup.md) 132 - [QRCode](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-qrcode.md) 133 - [TextClock](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-textclock.md) 134 - [TextTimer](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-texttimer.md) 135- 空白与分隔 136 - [Blank](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-blank.md) 137 - [Divider](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-divider.md) 138- 菜单 139 - [Menu](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-menu.md) 140 - [MenuItem](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-menuitem.md) 141 - [MenuItemGroup](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-menuitemgroup.md) 142- 弹窗 143 - [警告弹窗 (AlertDialog)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-alert-dialog-box.md) 144 - [列表选择弹窗 (ActionSheet)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-action-sheet.md) 145 - [自定义弹窗 (CustomDialog)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-custom-dialog-box.md) 146 - [日历选择器弹窗 (CalendarPickerDialog)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-calendarpicker-dialog.md) 147 - [日期滑动选择器弹窗 (DatePickerDialog)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-datepicker-dialog.md) 148 - [时间滑动选择器弹窗 (TimePickerDialog)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-timepicker-dialog.md) 149 - [文本滑动选择器弹窗 (TextPickerDialog)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-methods-textpicker-dialog.md) 150 - [全模态(bindContentCover)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-modal-transition.md) 151 - [半模态(bindSheet)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-sheet-transition.md) 152 - [bindPopup(bindPopup)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-universal-attributes-popup.md) 153 - [promptAction(promptAction)](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/js-apis-promptAction.md) 154 155 156## 关键流程 157 158 159- 使用导航组件 Navigation 加载所有组件 160- 用户选择组件后,打开组件对应的NavDestination 161- 定义组件属性值对应的的状态变量 162- 通过设置界面操作修改状态变量,刷新组件UI,完成预览功能 163 164## 文件结构 165## 目录 166### 目录结构 167``` 168/foundation/arkui/ace_engine/examples/components 169├── common # 公共能力层目录 170│ └── src/main/ets 171│ └── components # 公共组件 172│ └── utils # 公共工具 173├── features # 公共能力层目录 174│ └── xxxxxx # 分类代码目录,如行列与堆叠 175├── entry 176│ └── src/main/ets 177│ └── entryability 178│ └── entrybackupability 179│ └── pages 180│ └── index.ets # 首页 181``` 182 183## DFX设计 184### 体验性 185- 目标:确保UX预览App提供直观、高效且令人愉悦的用户体验。 186- 措施: 187 - 界面设计:采用简洁的UI设计,确保所有功能一目了然,减少用户认知负担。 188 - 交互设计:优化手势操作,如滑动、点击等,确保流畅且符合用户习惯。 189 - 即时反馈:提供清晰的加载状态、操作反馈和错误提示,增强用户操作的确定性和控制感。 190### 高效开发 191- 目标:提升开发效率,减少开发周期中的错误和重复工作。 192- 措施: 193 - 所有属性设置使用common module定义的通用block组件,提升开发效率 194 - 模块化开发:将App拆分为多个独立的模块,每个模块负责特定的功能,便于团队协作和代码复用。 195 - 自动化测试:集成单元测试和集成测试框架,确保代码质量,减少手动测试的工作量。 196 - 版本控制:使用Git等版本控制系统,管理代码变更,确保团队成员之间的协作顺畅。 197### 可维护性 198- 目标:确保App在发布后易于维护和更新,降低长期维护成本。 199- 措施: 200 - 清晰文档:编写详细的开发文档,包括架构设计图和代码注释等。 201 - 代码质量:遵循编程规范,保持代码清晰、可读和可维护。 202### 可扩展性 203- 目标:确保App能够随着业务需求的变化而灵活扩展。 204- 措施: 205 - 通过配置RouteGroup数组数据新增组件 206 207## 测试设计 208 209- 每个组件对应一个describe,每个属性对应一个it(用例),对组件的属性设置UI进行单元测试 210- UITest用例步骤如下: 211 - 进入组件 212 - 打开属性设置UI 213 - 找到对应的属性block 214 - 进行设置 215 - assert结果 216- 可以通过@ohos.UiTest获取的组件属性,需要assert属性值与用例输入值相等 217- 不可通过@ohos.UiTest获取的组件属性,设置成功即可 218- UITest覆盖率需达到80%-90% 219 220## 规范与要求 221- [JavaScript语言通用编程规范](https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/OpenHarmony-JavaScript-coding-style-guide.md) 222- [OpenHarmony应用TS&JS编程指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/contribute/OpenHarmony-Application-Typescript-JavaScript-coding-guide.md) 223- [社区共建合入要求](https://gitee.com/openharmony/applications_app_samples/blob/master/CodeCommitChecklist.md) 224- 应用支持API12标准SDK 225 226 227 228