• Home
Name Date Size #Lines LOC

..--

AppScope/22-Oct-2025-3633

common/22-Oct-2025-14599

features/settingitems/22-Oct-2025-2,0721,959

hvigor/22-Oct-2025-2322

products/default/22-Oct-2025-1,095936

screenshots/devices/22-Oct-2025-

.gitignoreD22-Oct-2025134 1010

LICENSED22-Oct-202511.1 KiB202169

README.mdD22-Oct-20256.8 KiB10781

build-profile.json5D22-Oct-20251.2 KiB5150

hvigorfile.jsD22-Oct-2025778 181

hvigorwD22-Oct-20252.1 KiB6428

hvigorw.batD22-Oct-20252 KiB7356

oh-package.json5D22-Oct-2025814 2725

ohosTest.mdD22-Oct-20251.5 KiB1412

README.md

1# 一多设置典型页面
2
3### 介绍
4
5本示例展示了设置应用的典型页面,其在小窗口和大窗口有不同的显示效果,体现一次开发、多端部署的能力。
6
71. 本示例使用[一次开发多端部署](https://gitee.com/openharmony/docs/tree/master/zh-cn/application-dev/key-features/multi-device-app-dev)中介绍的自适应布局能力和响应式布局能力进行多设备(或多窗口尺寸)适配,保证应用在不同设备或不同窗口尺寸下可以正常显示。
82. 本示例使用[Navigation组件](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-navigation.md),实现小窗口单栏显示、大窗口双栏显示的效果。
9
10### 效果预览
11
12本示例在不同窗口尺寸下的显示效果。
13
14![](screenshots/devices/img4.png)
15
16本示例在开发板上的运行效果。
17
18| 全屏显示                           | 窗口操作按钮                       | 悬浮显示                           |
19| ---------------------------------- | ---------------------------------- | ---------------------------------- |
20| ![](screenshots/devices/img1.jpeg) | ![](screenshots/devices/img2.jpeg) | ![](screenshots/devices/img3.jpeg) |
21
22
23使用说明:
24
251. 启动应用,查看应用在全屏状态下的显示效果。
262. 依次点击`WLAN` -> `更多WLAN设置`,查看应用的显示效果。
273. 依次点击`更多连接`->`NFC`,查看应用的显示效果。
284. 在应用顶部,下滑出现窗口操作按钮。(建议通过外接鼠标操作,接入鼠标只需要将鼠标移动至顶部即可出现窗口,API10中RK设备不出现下拉窗口)
295. 点击悬浮图标,将应用悬浮在桌面上显示。
306. 拖动应用悬浮窗口改变窗口尺寸,触发应用显示刷新。改变窗口尺寸的过程中,窗口尺寸可能超出屏幕尺寸,此时在屏幕中只能看到应用部分区域的显示。可以通过移动窗口位置,查看应用其它区域的显示。
317. 重复步骤2和3,查看应用在不同窗口尺寸下的显示效果。
32
33### 工程目录
34```
35features/settingitems/src/main/ets/
36|---settingList
37|   |---settingList.ets                    // 设置页面
38|---moreconnections
39|   |---MoreConnectionsItem.ets            // 更多连接模块
40|   |---Nfc.ets                            // nfc对象操作类
41|---wlan
42|   |---WlanMoreSetting.ets                // 更多网络设置模块
43|   |---WlanSettingItem.ets                // 网络设置模块
44|---components
45|   |---ItemDescription.ets                // 每个单元组模块前的标题描述模块
46|   |---ItemGroup.ets                      // 单元组模块
47|   |---MainItem.ets                       // 主体框架模块
48|   |---SearchBox.ets                      // 搜索框模块
49|   |---SubItemArrow.ets                   // 下一步模块(箭头跳转组件)
50|   |---SubItemToggle.ets                  // 状态按钮组件
51|   |---SubItemWifi.ets                    // 子网络列表模块
52|---products/default/src/main/ets/pages/
53|   |---Index.ets                          // 首页
54```
55
56### 具体实现
57本示例介绍如何实现不同断点下存在单栏和双栏设计的场景,主要有以下三方面:
58#### 实现单/双栏的显示效果
59通过Navigation组件实现单/双栏展示,由Navbar(设置主页面)和Content(跳转子页面)两部分区域组成,Navigation组件支持Stack、Split以及Auto三种模式。
601、stack模式:导航栏与内容区独立显示,相当于多个页面。展示效果:从Navbar(设置主页面)跳转到Content1(WLAN页面)跳转到Content2(更多WLAN模式)。
612、Split模式:导航栏与内容区分两栏显示。展示效果:Navbar+Content1。
623、auto模式:Navigation组件可以根据应用窗口尺寸,自动选择合适的模式:窗口宽度小于520vp时,采用Stack模式显示;窗口宽度大于等于520vp时,采用Split模式显示。当窗口尺寸发生改变时,Navigation组件也会自动在Stack模式和Split模式之间切换。[源码参考](products/default/src/main/ets/pages/Index.ets )。
63
64#### 实现点击跳转或刷新
65Navigation组件通常搭配NavRouter组件以及NavDestination组件一起使用:
66* NavRouter组件用于控制Navigation组件Content区域的显示和刷新逻辑:其必须包含两个孩子节点。
671、容器类组件-直接控制NavRouter的显示效果。
682、NavDestination组件:刷新Navigation组件Content区域的显示。
693、NavRouter组件通过onStateChange回调事件,用于通知开发者NavRouter的状态:用户点击NavRouter,激活NavRouter并加载对应的NavDestination子组件时,回调onStateChange(true);
704、NavRouter对应的NavDestination子组件不再显示时,回调onStateChange(false)。
71* NavDestination组件用于实际刷新Navigation组件Content区域的显示。
72* 例如:在本示例中wlan功能项为NavRouter的第一个孩子节点,跳转的子页面WLAN为NavRouter的第二个孩子节点,[源码参考](features/settingitems/src/main/ets/wlan/WlanSettingItem.ets )。
73#### 实现多级跳转
74Navigation组件支持自动切换单栏和双栏的显示效果,同时可以根据当前状态自动添加返回键及响应系统的返回键事件。[源码参考](features/settingitems/src/main/ets/wlan/WlanMoreSetting.ets )。
751、通过激活SettingList中的WLANSettingItem,可以加载及显示WlanSetting。
762、激活WlanSetting中的WlanMoreSettingItem,可以加载及显示WlanMoreSetting。
77
78### 相关权限
79
80不涉及。
81
82### 依赖
83
84不涉及。
85
86### 约束与限制
87
881. 本示例仅支持标准系统上运行,支持设备:RK3568。
89
902. 本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release)
91
923. 本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。
93
944. 本示例需要使用[新框架](https://gitee.com/yan-shuifeng/arkui_docs/blob/master/%E6%96%B0%E6%A1%86%E6%9E%B6%E5%88%87%E6%8D%A2/acenewpipe.md),才可以正常安装运行。
95
965. 本示例在开发板上运行时,可以[修改开发板系统配置文件以使能系统窗口能力](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/key-features/multi-device-app-dev/multi-faq.md#%E5%A6%82%E4%BD%95%E5%BC%80%E5%90%AF%E8%87%AA%E7%94%B1%E7%AA%97%E5%8F%A3)97
98### 下载
99
100如需单独下载本工程,执行如下命令:
101```
102git init
103git config core.sparsecheckout true
104echo code/SuperFeature/MultiDeviceAppDev/Settings/ > .git/info/sparse-checkout
105git remote add origin https://gitee.com/openharmony/applications_app_samples.git
106git pull origin master
107```