阅读本文前,开发者需熟悉ArkUI(方舟UI框架)和一次开发,多端部署概览相关知识。
本文从当前常见的多设备应用场景中,选取图片美化应用作为典型案例,详细介绍“一多”在实际开发中的应用。
图片美化应用的核心功能是用户交互,主要功能模块包含对话聊天、通讯录和社交圈等。开发者在开发“一多”应用时,常面临多端适配问题。本文针对图片美化应用的常见多端适配问题,提供解决方案。
应用当前已适配的设备包括:直板机、双折叠(Mate X系列)、三折叠、阔折叠、平板和电脑。
阅读本文前,开发者需熟悉ArkUI(方舟UI框架)和一次开发,多端部署概览相关知识。
下文将从UX设计、工程管理、页面开发三个角度,介绍图片美化应用在多设备开发中的最佳实践。
为确保“一多”工程代码的可复用性与可维护性,推荐开发者采用分层架构组织代码工程。分层架构将项目划分为产品定制层(products)、基础特性层(features)和公共能力层(common)三个层级,各层级权责明确且功能独立,为开发者提供了清晰、高效且可扩展的设计架构。关于分层架构的具体设计细节,可参考分层架构设计。
建议开发者参考多设备工程部署与发布相关内容,在掌握分层架构工程的创建与配置方法后,创建模板项目工程,并根据图片美化应用的开发需求进行针对性修改,确保工程架构贴合实际业务需求。
图片美化应用基于推荐的分层架构,按products、features、common三个层级组织代码工程。每个层级的设计如下:
工程结构如下:
- ├──features
- │ ├──multipicturebrowsing // 照片浏览模块
- │ │ └──src/main
- │ │ ├──ets
- │ │ │ ├──constants // 照片浏览常量类
- │ │ │ ├──datasource // 照片数据源类
- │ │ │ ├──model // 照片浏览模块数据模型
- │ │ │ ├──view // 照片浏览模块视图
- │ │ │ └──viewmodel // 照片浏览模块视图模型
- │ │ └──resources // 照片浏览模块资源
- │ └──multipictureediting // 照片编辑模块
- │ └──src/main
- │ ├──ets
- │ │ ├──constants // 照片编辑常量类
- │ │ ├──model // 照片编辑模块数据模型
- │ │ ├──view // 照片编辑模块视图
- │ │ └──viewmodel // 照片编辑模块视图模型
- │ └──resources // 照片编辑模块资源
- ├──multipicturecommon
- │ └──src/main
- │ ├──ets
- │ │ ├──constants // 公共常量定义
- │ │ └──utils // 工具类
- │ └──resources // 公共资源
- └──products
- ├──multipicturedefaultsample // 手机/平板设备
- │ └──src/main
- │ ├──ets
- │ │ ├──constants // 常量类
- │ │ ├──defaultability // 入口类
- │ │ ├──defaultbackupability // 应用数据备份恢复自定义拓展类
- │ │ ├──model // 数据模型
- │ │ ├──pages // 入口页面
- │ │ ├──view // 视图
- │ │ └──viewmodel // 视图模型
- │ └──resources // 资源文件
- └──multipicturepcsample // 电脑设备
- └──src/main
- ├──ets
- │ ├──constants // 常量类
- │ ├──model // 数据模型
- │ ├──pages // 入口页面
- │ ├──pcability // 入口类
- │ └──pcbackupability // 应用数据备份恢复自定义拓展类
- │ ├──view // 视图
- │ └──viewmodel // 视图模型
- └──resources // 资源文件
本章介绍如何针对直板机、双折叠(Mate X系列)、三折叠、阔折叠和平板设备上的图片美化应用,使用“一多”布局能力,实现页面层级“一套代码、多端适配”的目标。同时,介绍这些设备上的窗口适配方案。
适配设备支持全屏、分屏、悬浮窗和自由窗口模式,具体参见窗口模式。其中,分屏模式与悬浮窗无需特殊设计,可通过系统方式进入。应用内需监听窗口尺寸变化,通过断点刷新UI即可自动适配全屏、分屏、悬浮窗及自由窗口模式的布局。
在类直板机型中推荐仅竖屏显示,在双折叠展开态、三折叠G态及平板等大屏幕场景下推荐支持四方向旋转,并受控于控制中心的旋转开关。图片美化类应用在module.json5配置文件中,建议设置orientation为FOLLOW_DESKTOP,详细说明请参考窗口方向。
根据UX设计要求,需实现不同窗口模式(全屏、分屏、悬浮窗、自由窗口)下的沉浸式效果,具体实现指南请参考窗口沉浸式。推荐开发者采用组件级沉浸方案(通过组件设置页面沉浸)实现效果,同时需执行动态安全区避让,确保沉浸式显示效果。自由窗口模式下应使用window.setWindowDecorVisible()隐藏标题栏,仅保留右上角三键。此时,应用页面延伸至标题栏区域,实现沉浸式显示效果。
图片美化应用的照片浏览页主要用于展示照片和提供分类导航,以满足用户查看不同相册照片的需求。根据功能设计,将照片浏览页的相关内容划分为4个区域,效果如下:
横向断点 | sm/md(横/纵断点) | sm | md | lg、xl |
|---|---|---|---|---|
效果图 |
|
|
|
|
界面开发
具体介绍及实现方案如下表所示:
区域编号 | 简介 | 实现方案 |
|---|---|---|
1 | 侧边导航栏 | 使用HdsNavigation (导航根视图容器)实现,通过窗口宽度与高宽比,控制窗口变化时,修改mode单双栏显示。 |
2 | 顶部标题栏 | 使用HdsNavDestination (导航子页面容器)设置titleBar属性实现。在不同的设备宽度下组件自适应占满一屏。 |
3 | 底部导航栏 | 使用HdsTabs (底部页签)实现,通过barFloatingStyle属性设置页签悬浮样式。 |
4 | 图片内容区 | 使用Grid组件实现,通过@Env:环境变量修改不同断点下columnsTemplate,显示不同的列数,并设置图片的aspectRatio属性固定宽高比。 |
图片美化应用的照片编辑页主要用于一键套用预设滤镜,以满足用户的个性化表达需求。根据功能设计,将照片编辑页的相关内容划分为4个区域,效果如下:
横向断点 | sm/md(横/纵断点) | sm | md | lg |
|---|---|---|---|---|
消息页 |
|
|
|
|
界面开发
具体介绍及实现方案如下表所示:
区域编号 | 简介 | 实现方案 |
|---|---|---|
1 | 顶部标题栏 | 使用Row组件自定义TitleView实现。在不同的设备宽度下组件自适应占满一屏。 |
2 | 底部/侧边工具栏 | 使用Flex组件实现,通过窗口宽度与高宽比,控制窗口变化时,子组件排列方向为Row或Column。 |
3 | 图片内容区 | 使用堆叠容器Stack组件嵌套Image组件实现,设置图片的aspectRatio属性固定宽高比。并通过监听断点变化,动态调整两侧边距。 |
4 | 警告弹窗 | 使用警告弹窗 (AlertDialog)实现,仅在PuraX外屏等小屏场景弹出。 |
在照片浏览页面,用户可通过双指缩放手势动态调整图片宫格布局的显示大小。双指向外张开时,宫格放大,每行图片数量减少;双指向内捏合时,宫格缩小,每行图片数量增多。效果图如下:

使用PinchGesture实现双指捏合手势触发时,动态修改Grid组件的显示列数。开发详情请参考手势事件或示例代码。
本章介绍如何基于现有移动端界面开发方案实现布局复用,以高效完成电脑设备上图片美化应用的界面开发,同时介绍电脑端的窗口适配方案。
图片美化应用的照片浏览页主要用于展示照片及分类导航,以满足用户查看不同相册照片的需求。根据功能设计,将照片浏览页相关内容划分为3个区域,效果如下:

界面开发
具体介绍及实现方案如下表所示:
区域编号 | 简介 | 实现方案 |
|---|---|---|
1 | 侧边导航栏 | 同移动端照片浏览页对应区域的布局实现方案一致。 |
2 | 顶部标题栏 | |
3 | 图片内容区 |
图片美化应用的照片编辑页主要用于一键套用预设滤镜,以满足用户的个性化表达需求。根据功能设计,将照片编辑页的相关内容划分为3个区域,效果如下:

界面开发
具体介绍及实现方案如下表所示:
区域编号 | 简介 | 实现方案 |
|---|---|---|
1 | 顶部标题栏 | 同移动端照片编辑页对应区域的布局实现方案一致。 |
2 | 底部/侧边工具栏 | |
3 | 图片内容区 |
在照片浏览页面,电脑端支持通过触控屏或触控板的双指捏合操作实现图片宫格布局的动态缩放切换,两种交互事件均可由PinchGesture实现,详情可参考移动端交互开发。