折叠电脑应用开发
========

#### 概述

HarmonyOS折叠电脑凭借其独特的折叠设计、全屏触控和[虚拟键盘](https://developer.huawei.com/consumer/cn/doc/design-guides/foldable-pc-0000002322600098#虚拟键盘)的交互方式，融合了一体机、笔记本和平板三种设备的使用体验，在形态创新与交互体验方面有所提升。

除传统电脑的基础功能外，该设备还具备以下核心特性：

1.  设备形态：支持唤起全尺寸键盘的半折叠态、关闭全尺寸键盘的半折叠态、横向展开态、竖向展开态和外接显示器五种使用形态。
2.  交互设计：在半折叠态下，上下两块屏幕均可独立操作。用户可点击桌面右下角键盘图标，或通过八指及以上多指触控屏幕唤起全尺寸虚拟键盘，获得传统电脑的操作体验。
3.  屏幕显示方向：半折叠态仅支持固定显示方向，不支持屏幕旋转；展开态支持三种屏幕显示方向（[display.Orientation](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#orientation10)）：横屏（1-LANDSCAPE）、反向横屏（3-LANDSCAPE\_INVERTED）和竖屏（0-PORTRAIT），且默认开启屏幕旋转，无法关闭。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ad/v3/0x-uMDhtQaGokJE_Mj6d3Q/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T074615Z&HW-CC-Expire=86400&HW-CC-Sign=5CD1E7E810B8304AEF4DB08F8683D7D7BCB712A687EEBD15DE931C2098802800)

当磁吸键盘贴附在下屏时，设备进入半折叠态（唤起全尺寸键盘），此时下屏无法使用。

当前折叠电脑产品主要为MateBook Fold系列。

| 
产品名称

 | 

示意图

 |
| :-- | :-- |
| 

**MateBook Fold系列**

 | 

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ae/v3/V09SdQVoQ2yl12sNYM8ZYg/zh-cn_image_0000002585626810.png?HW-CC-KV=V1&HW-CC-Date=20260612T074615Z&HW-CC-Expire=86400&HW-CC-Sign=5DACDBFE02CC8AFF87E61B6F627FC35D961646B693AF7E9F6945DA244665C913 "点击放大")

 |

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/87/v3/JZmOcl9wQm6x6-5XppFojw/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T074615Z&HW-CC-Expire=86400&HW-CC-Sign=107D2D1D51BD0159EBA93F21045FD3DD855692A98CC84D3FE6B364FC6030EED1)

本文聚焦于折叠电脑应用体验提升的开发指导。如需多设备开发的基础通用能力指导，请参考“[一次开发，多端部署概览](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-overview)”系列文章。

#### 产品硬件参数

本章将以MateBook Fold产品为例，介绍折叠电脑的屏幕尺寸、相机、折叠能力等硬件参数信息。

#### \[h2\]屏幕规格信息

折叠电脑在不同折叠状态下，分辨率、屏幕宽度等属性存在差异，具体说明如下：

*   在半折叠态（关闭全尺寸键盘）下，设备拥有上下两个屏幕，其中上屏的displayId为0，下屏的displayId为999；而在半折叠态（唤起全尺寸键盘）和展开态下，仅显示displayId为0的屏幕。
*   折叠电脑底部工具栏高度固定为118px，但在不同折叠电脑形态下，工具栏占用的宽度和位置不同，屏幕可用宽高（[availableWidth/availableHeight](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#属性)）也会随之变化。
*   折叠电脑外接显示器时，会自动进入横向展开态布局，且屏幕方向为反向横屏，此时折叠电脑默认作为主显示器（displayId为0），外接屏幕作为副显示器（displayId与接入的端口有关）。可使用[getWindowProperties()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-window-window#getwindowproperties9)方法获取当前窗口的属性[WindowProperties](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-window-i#windowproperties)，通过其中的displayId字段，判断窗口所在的显示器。

**半折叠态屏幕规格信息**

<table><tbody><tr><th class="firstcol" id="mcps1.3.9.5.1.8.1.1" valign="top"><p><a href="https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#属性" target="_blank">屏幕旋转角度（rotation）</a></p></th><td align="left" class="cellrowborder" colspan="3" valign="top"><p>0(0度)</p></td><td align="left" class="cellrowborder" valign="top"><p>1(90度)</p></td><td align="left" class="cellrowborder" valign="top"><p>2(180度)</p></td><td align="left" class="cellrowborder" valign="top"><p>3(270度)</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.2.1" valign="top"><p>设备形态</p></th><td align="left" class="cellrowborder" valign="top"><p>半折叠态（唤起全尺寸键盘）</p></td><td align="left" class="cellrowborder" colspan="2" valign="top"><p>半折叠态（关闭全尺寸键盘）</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.3.1" valign="top"><p>半折叠态效果图</p></th><td align="left" class="cellrowborder" valign="top"><p><span><img height="336.1575" originheight="1166" originwidth="1384" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d/v3/T_TOmIuHQlGhmF_cO6SsyQ/zh-cn_image_0000002615986527.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=419087AD8B96878EA5ED0F1BD53DB46C997C0D68ABCDD2DD55B5639FA7068201" title="点击放大" width="399"></span></p></td><td align="left" class="cellrowborder" colspan="2" valign="top"><p><span><img height="349.27130000000005" originheight="1166" originwidth="1332" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/b3/v3/kHWFkWduQLOijUhyQriwgQ/zh-cn_image_0000002616066617.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=B9BCF4B6B61B9DFFD0FBB017C232EAE1C9DB217A2386EC75F696583E666CBF63" title="点击放大" width="399"></span></p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.4.1" valign="top"><p><a href="https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#orientation10" target="_blank">屏幕方向（Orientation）</a></p></th><td align="left" class="cellrowborder" colspan="3" valign="top"><p>竖屏PORTRAIT</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.5.1" valign="top" width="14.285714285714285%"><p>屏幕ID</p></th><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>displayId：0</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>displayId：0</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>displayId：999</p></td><td align="left" class="cellrowborder" valign="top" width="13.985804258722384%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.6.1" valign="top" width="14.285714285714285%"><p>分辨率（px）</p></th><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>2472*1608</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>2472*1608</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>2472*1606</p></td><td align="left" class="cellrowborder" valign="top" width="13.985804258722384%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.7.1" valign="top" width="14.285714285714285%"><p>分辨率（vp）（向下取整）</p></th><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>1373*893</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>1373*893</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>1373*892</p></td><td align="left" class="cellrowborder" valign="top" width="13.985804258722384%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.8.1" valign="top" width="14.285714285714285%"><p>屏幕可用宽高（px）</p></th><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>2472*1490（底部工具栏高度118px）</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>2472*1608</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>2472*1488（底部工具栏高度118px）</p></td><td align="left" class="cellrowborder" valign="top" width="13.985804258722384%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.9.1" valign="top" width="14.285714285714285%"><p>屏幕可用宽高（vp）（向下取整）</p></th><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>1373*827</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>1373*893</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>1373*826</p></td><td align="left" class="cellrowborder" valign="top" width="13.985804258722384%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.5.1.8.10.1" valign="top" width="14.285714285714285%"><p><a href="https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-responsive-layout#section1532120147301" target="_blank">横纵断点</a></p></th><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>横向断点lg，纵向断点sm</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>横向断点lg，纵向断点sm</p></td><td align="left" class="cellrowborder" valign="top" width="14.385684294711588%"><p>横向断点lg，纵向断点sm</p></td><td align="left" class="cellrowborder" valign="top" width="13.985804258722384%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="14.285714285714285%"><p>NA</p></td></tr></tbody></table>

**展开态屏幕规格信息**

<table><tbody><tr><th class="firstcol" id="mcps1.3.9.7.1.7.1.1" valign="top"><p><a href="https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#属性" target="_blank">屏幕旋转角度（rotation）</a></p></th><td align="left" class="cellrowborder" valign="top"><p>0(0度)</p></td><td align="left" class="cellrowborder" valign="top"><p>1(90度)</p></td><td align="left" class="cellrowborder" valign="top"><p>2(180度)</p></td><td align="left" class="cellrowborder" colspan="2" valign="top"><p>3(270度)</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.2.1" valign="top" width="14.618538146185381%"><p>设备形态</p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>竖向展开态</p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>横向展开态</p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p>横向展开态</p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p>外接显示器</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.3.1" valign="top" width="14.618538146185381%"><p>展开态效果图</p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p><span><img height="476.72520000000003" originheight="1444" originwidth="1128" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/b8/v3/fWMzRpMOT1auUTJrtyD9IQ/zh-cn_image_0000002585466878.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=4831A4B782C4D491FFE16B656B0CA259E4DDFA6B9B9D20B883820886F713DE9C" title="点击放大" width="372.40000000000003"></span></p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p><span><img height="327.5923" originheight="1150" originwidth="1494" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/dd/v3/CldomfMFTXSJ-lvniQMgTw/zh-cn_image_0000002585626812.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=26BEAB04B3083A6F04E38587377EFDE9D66B521E2A3DCAC022AC26E87098E682" title="点击放大" width="425.6"></span></p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p><span><img height="327.5923" originheight="1150" originwidth="1494" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/68/v3/gg_umEv4SHCkDPBJbsBVAg/zh-cn_image_0000002615986529.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=A2469D868F9246FBD6B905E29AA23372140B2DE3DE493373C6C78A7EDA51667F" title="点击放大" width="425.6"></span></p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p><span><img height="255.9984" originheight="598" originwidth="1864" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/a1/v3/XkqT9oV6QYGfhQ9anLDUSA/zh-cn_image_0000002616066621.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=3166CDFAE935852EFABE05D619A0E378D34770B88BDC921F95981943C0C898F7" title="点击放大" width="798"></span></p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.4.1" valign="top"><p><a href="https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#orientation10" target="_blank">屏幕方向（Orientation）</a></p></th><td align="left" class="cellrowborder" valign="top"><p>竖屏PORTRAIT</p></td><td align="left" class="cellrowborder" valign="top"><p>横屏LANDSCAPE</p></td><td align="left" class="cellrowborder" valign="top"><p>NA</p></td><td align="left" class="cellrowborder" colspan="2" valign="top"><p>反向横屏LANDSCAPE_INVERTED</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.5.1" valign="top" width="14.618538146185381%"><p>屏幕ID</p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>displayId：0</p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>displayId：0</p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p>displayId：0</p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p>主显示器：displayId为0</p><p>外接显示器：displayId与接入的端口有关</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.6.1" valign="top" width="14.618538146185381%"><p>分辨率（px）</p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>2472*3296</p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>3296*2472</p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p>3296*2472</p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p>3296*2472</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.7.1" valign="top" width="14.618538146185381%"><p>分辨率（vp）（向下取整）</p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>1373*1831</p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>1831*1373</p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p>1831*1373</p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p>1831*1373</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.8.1" valign="top" width="14.618538146185381%"><p>屏幕可用宽高（px）</p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>2472*3178（底部工具栏高度118px）</p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>3296*2354（底部工具栏高度118px）</p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p>3296*2354（底部工具栏高度118px）</p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p>3296*2354（底部工具栏高度118px）</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.9.1" valign="top" width="14.618538146185381%"><p>屏幕可用宽高（vp）（向下取整）</p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>1373*1765</p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>1831*1307</p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p>1831*1307</p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p>1831*1307</p></td></tr><tr><th class="firstcol" id="mcps1.3.9.7.1.7.10.1" valign="top" width="14.618538146185381%"><p><a href="https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-responsive-layout#section1532120147301" target="_blank">横纵断点</a></p></th><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>横向断点lg，纵向断点lg</p></td><td align="left" class="cellrowborder" valign="top" width="17.998200179982003%"><p>横向断点xl，纵向断点sm</p></td><td align="left" class="cellrowborder" valign="top" width="8.819118088191182%"><p>NA</p></td><td align="left" class="cellrowborder" valign="top" width="12.31876812318768%"><p>横向断点xl，纵向断点sm</p></td><td align="left" class="cellrowborder" valign="top" width="28.247175282471748%"><p>横向断点xl，纵向断点sm</p></td></tr></tbody></table>

**常用接口**

*   获取屏幕对象相关接口
    
    [Display](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#display)对象中包含屏幕宽高，屏幕可用区域宽高等重要信息，对应的Display区域如下图所示。
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/37/v3/1kLE7dhZTjCWK-EJDcQ6QA/zh-cn_image_0000002585466890.png?HW-CC-KV=V1&HW-CC-Date=20260612T074615Z&HW-CC-Expire=86400&HW-CC-Sign=B8B00C47BB8410DDA6B0CCBA8FD95D60824CD09EFBE08DCDF61BE7A406BE1A72 "点击放大")
    
    | 
    API
    
     | 
    
    说明
    
     |
    | :-- | :-- |
    | 
    
    [display.getAllDisplays()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetalldisplays9)
    
     | 
    
    获取所有的Display对象。不同设备形态下对应的Display区域如上图所示。
    
     |
    | 
    
    [display.getDisplayByIdSync()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetdisplaybyidsync12)
    
     | 
    
    根据displayId获取对应的Display对象。具体的displayId可参考[屏幕规格信息](#section05491630111312)表格中屏幕ID行。
    
    除半折叠态（关闭全尺寸键盘）分为上下两屏，上屏displayId为0，下屏displayId为999，其余状态折叠电脑屏幕的displayId均为0。
    
     |
    | 
    
    [display.getDefaultDisplaySync()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetdefaultdisplaysync9)
    
     | 
    
    获取当前默认的Display对象。除半折叠态（关闭全尺寸键盘）获取的Display对象为displayId为0的上屏，其余设备形态下获取的Display区域如上图所示。
    
     |
    | 
    
    [display.getPrimaryDisplaySync()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetprimarydisplaysync14)
    
     | 
    
    获取主屏信息。对于折叠电脑，当外接屏幕时，获取的是当前主屏幕的Display对象；当没有外接屏幕时，获取的是设备自带屏幕中displayId为0的Display对象。
    
     |
    | 
    
    [display.on('add'|'remove'|'change')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displayonaddremovechange)
    
     | 
    
    开启显示设备新增、移除、变化的监听。
    
     |
    
    ![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/4b/v3/59l-nDumTEaXmYPn3QXmNA/note_3.0-zh-cn.png?HW-CC-KV=V1&HW-CC-Date=20260612T074615Z&HW-CC-Expire=86400&HW-CC-Sign=4B42FCC3BEF0CE3D6215995C11D0437225062ED25A4CCCD5201C77272FBECF51)
    
    display.on('add'|'remove'|'change')触发场景如下：
    
    *   display.on('add')：半折叠态（唤起全尺寸键盘）->半折叠态（关闭全尺寸键盘），展开态->半折叠态，外接显示器。
    *   display.on('change')：涉及Display变化，包括折叠状态、屏幕方向、可用区域变化等。
    *   display.on('remove')：半折叠态（关闭全尺寸键盘）->半折叠态（唤起全尺寸键盘），半折叠态->展开态，取消外接显示器。
    

#### \[h2\]相机硬件信息

折叠电脑相机已预设默认的[镜头安装角度](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/camera-rotation-term#相机镜头安装角度)，使用时需结合镜头角度与设备旋转角度进行适配，具体定义可参考[预览旋转角度](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/camera-rotation-term#预览旋转角度)。当屏幕方向一致时，前置镜头角度与需设置的预览流旋转角度如下，不同设备状态下的相机参数保持一致。

<table><tbody><tr><th align="left" class="firstcol" id="mcps1.3.10.3.1.5.1.1" valign="top" width="16.8%"><p>屏幕旋转角度（rotation）</p></th><td align="left" class="cellrowborder" valign="top" width="28.849999999999998%"><p>0(0度)</p></td><td align="left" class="cellrowborder" valign="top" width="27.93%"><p>1(90度)</p></td><td align="left" class="cellrowborder" valign="top" width="26.419999999999998%"><p>3(270度)</p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.10.3.1.5.2.1" valign="top" width="16.8%"><p>示意图</p></th><td align="left" class="cellrowborder" valign="top" width="28.849999999999998%"><p style="color: rgb(255,0,0);"><span><img height="520.5753000000001" originheight="1109" originwidth="850" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/2e/v3/7vb3AP-JRtOAmGwJcuHnxQ/zh-cn_image_0000002585626824.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=AE075DAB919F3421E9A46A9CB163AEEF18ACC30F84303DB5E47F706CB64289CF" title="点击放大" width="399"></span></p><p></p><p style="color: rgb(255,0,0);"><span><img height="329.9331" originheight="855" originwidth="1034" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/ff/v3/YqyAL7YQQimy_NA0Ejp3ug/zh-cn_image_0000002615986541.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=2F8BF2B3ED0FC07D143C1AD4037CFC1F5BB04D60F1D46D6817A6734435305F51" title="点击放大" width="399"></span></p></td><td align="left" class="cellrowborder" valign="top" width="27.93%"><p style="color: rgb(255,0,0);"><span><img height="305.8202" originheight="850" originwidth="1109" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/d3/v3/hBB09nfERYmNvJIOFF3g6w/zh-cn_image_0000002616066633.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=9393CAB72FB7E1F09EB66400231208720E6CFD245267C95DF4EBA5434B372B08" title="点击放大" width="399"></span></p></td><td align="left" class="cellrowborder" valign="top" width="26.419999999999998%"><p style="color: rgb(255,0,0);"><span><img height="305.8202" originheight="850" originwidth="1109" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/89/v3/NYz_0DeTQJiKnZYFA-3CKQ/zh-cn_image_0000002585466892.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=26F93669A16473FD7B35B4AC1DA64250D93393AA017781EB7B015835B68C66FA" title="点击放大" width="399"></span></p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.10.3.1.5.3.1" valign="top" width="16.8%"><p>前置相机镜头角度</p></th><td align="left" class="cellrowborder" valign="top" width="28.849999999999998%"><p>270°</p></td><td align="left" class="cellrowborder" valign="top" width="27.93%"><p>270°</p></td><td align="left" class="cellrowborder" valign="top" width="26.419999999999998%"><p>270°</p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.10.3.1.5.4.1" valign="top" width="16.8%"><p>预览旋转角度</p></th><td align="left" class="cellrowborder" valign="top" width="28.849999999999998%"><p>270°+0°=270°</p></td><td align="left" class="cellrowborder" valign="top" width="27.93%"><p>270°+90° = 0°</p></td><td align="left" class="cellrowborder" valign="top" width="26.419999999999998%"><p>270°+270° = 180°</p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.10.3.1.5.5.1" valign="top"><p>后置相机镜头角度</p></th><td align="left" class="cellrowborder" colspan="3" valign="top"><p>无后置相机</p></td></tr></tbody></table>

#### \[h2\]设备折叠能力

折叠电脑具备独特的折叠功能，在不同折叠状态下展现出不同的特性。

通过[display.isFoldable()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displayisfoldable10)接口可判断设备是否支持折叠，若支持则返回true，否则返回false。通过[display.getFoldStatus()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetfoldstatus10)接口可获取折叠设备当前的折叠状态，返回结果可参考[FoldStatus](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#foldstatus10)。下表以Matebook Fold产品为例，展示了折叠电脑的折叠状态和属性。

<table><tbody><tr><th align="left" class="firstcol" id="mcps1.3.11.4.1.7.1.1" valign="top"><p>设备形态</p></th><td align="left" class="cellrowborder" valign="top"><p>半折叠态（唤起全尺寸键盘）</p></td><td align="left" class="cellrowborder" colspan="2" valign="top"><p>半折叠态（关闭全尺寸键盘）</p></td><td align="left" class="cellrowborder" valign="top"><p>横向展开态</p></td><td align="left" class="cellrowborder" valign="top"><p>竖向展开态</p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.11.4.1.7.2.1" valign="top"><p>效果图</p></th><td align="left" class="cellrowborder" valign="top"><p><span><img height="336.1575" originheight="1166" originwidth="1384" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/43/v3/-un5GfELTKuOo3665msebQ/zh-cn_image_0000002585626828.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=0DE53254EC277BF057481E2651868FE71DF9FA57AC7BA7E2D4269FF62AA72F27" title="点击放大" width="399"></span></p></td><td align="left" class="cellrowborder" colspan="2" valign="top"><p><span><img height="349.27130000000005" originheight="1166" originwidth="1332" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/3f/v3/vQlznjdzQzufzBKN1DInJQ/zh-cn_image_0000002615986543.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=B6EE433BC35F0EDE3ED0D8E52A352622A45731CFAC0F229569F8CFB95337FFB0" title="点击放大" width="399"></span></p></td><td align="left" class="cellrowborder" valign="top"><p><span><img height="327.5923" originheight="1150" originwidth="1494" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/9/v3/m3jNuSymTEqdLZPSRnyugg/zh-cn_image_0000002616066635.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=20B1057A511EA33818257CE4CB282263AC1C7043539218F5B1A70257C8A20CE0" title="点击放大" width="425.6"></span></p></td><td align="left" class="cellrowborder" valign="top"><p><span><img height="476.72520000000003" originheight="1444" originwidth="1128" src="https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/fd/v3/JaaHWhNcSQ-A5BA2Zc6uvw/zh-cn_image_0000002585466894.png?HW-CC-KV=V1&amp;HW-CC-Date=20260612T074615Z&amp;HW-CC-Expire=86400&amp;HW-CC-Sign=9712B03114850E8A7B1B35544A0FF804276959647197BE9A51579E956F486ADE" title="点击放大" width="372.40000000000003"></span></p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.11.4.1.7.3.1" valign="top"><p>isFoldable</p></th><td align="left" class="cellrowborder" colspan="5" valign="top"><p>true</p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.11.4.1.7.4.1" valign="top"><p><a href="https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#foldstatus10" target="_blank">FoldStatus</a></p></th><td align="left" class="cellrowborder" colspan="3" valign="top"><p>FOLD_STATUS_HALF_FOLDED</p></td><td align="left" class="cellrowborder" colspan="2" valign="top"><p>FOLD_STATUS_EXPANDED</p></td></tr><tr><th align="left" class="firstcol" id="mcps1.3.11.4.1.7.5.1" valign="top"><p><a href="https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#foldcreaseregion10" target="_blank">FoldCreaseRegion</a></p></th><td align="left" class="cellrowborder" colspan="5" valign="top"><p>{"left":0,"top":1608,"width":2472,"height":82}</p></td></tr></tbody></table>

设备折叠能力常用接口如下：

*   获取设备折叠状态相关接口
    
    | 
    API
    
     | 
    
    说明
    
     |
    | :-- | :-- |
    | 
    
    [display.getFoldStatus()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetfoldstatus10)
    
     | 
    
    主动获取可折叠设备的当前折叠状态。具体折叠状态可参考上表中的FoldStatus行。
    
     |
    | 
    
    [display.on('foldStatusChange')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displayonfoldstatuschange10)
    
     | 
    
    开启折叠设备折叠状态变化的监听。当前设备物理折叠状态FoldStatus变化时，触发回调函数，返回折叠设备当前折叠状态。
    
     |
    
*   获取可用区域相关接口
    
    | 
    API
    
     | 
    
    说明
    
     |
    | :-- | :-- |
    | 
    
    display.[getAvailableArea()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#getavailablearea12)
    
     | 
    
    获取当前设备屏幕的可用区域，使用Promise异步回调，仅支持电脑设备。
    
     |
    | 
    
    display.[on('availableAreaChange')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#onavailableareachange12)
    
     | 
    
    开启当前设备屏幕的可用区域监听。当前设备屏幕有可用区域变化时，触发回调函数，返回可用区域，仅支持电脑设备。
    
     |
    | 
    
    [display.getDisplayByIdSync()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetdisplaybyidsync12)
    
     | 
    
    返回displayId对应的display对象。其中包含电脑设备上屏幕的可用区域宽度availableWidth和高度availableHeight。display对应的区域可参考[屏幕规格信息](#section05491630111312)中的常用接口部分。
    
     |
    
*   获取折痕区域相关接口
    
    | 
    API
    
     | 
    
    说明
    
     |
    | :-- | :-- |
    | 
    
    [display.getCurrentFoldCreaseRegion()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetcurrentfoldcreaseregion10)
    
     | 
    
    在当前显示模式下获取折叠折痕区域。返回[FoldCreaseRegion](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#foldcreaseregion10)对象，即设备在当前显示模式下的折叠折痕区域。具体返回数据可参考[设备特有能力](#section1792714518428)表中的FoldCreaseRegion行。
    
     |
    

#### 创新与体验提升

#### \[h2\]悬停态适配

悬停态支持设备平稳放置于桌面，实现免手持体验，常用于视频通话、视频播放、拍照、听歌等不需要频繁交互的场景。这种状态下，应用需要对中间折痕区域进行避让，并对上下两个界面进行悬停态布局适配。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/5/v3/J2Dz5K8nTCqvBXpvqFpjUQ/zh-cn_image_0000002585626830.png?HW-CC-KV=V1&HW-CC-Date=20260612T074615Z&HW-CC-Expire=86400&HW-CC-Sign=F1E06A6BEDE0066541F0D8DD150AB2ED635C9A40554553E454FAC54B1AACE547 "点击放大")

#### \[h2\]开合适配

开合连续指应用在屏幕形态与窗口状态切换时，保持页面内容连贯，延续任务进度与运行状态。支持用户快速接续切换前的操作，打造流畅的切换体验。例如折叠电脑在半折叠态和展开态之间切换时，应用页面内容保持不变、状态无缝接续，保障使用体验不受影响。具体实现方案，可参考[开合连续](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-screen-diff#section16541144511135)章节。

#### \[h2\]焦点导航

折叠电脑支持唤起全尺寸键盘，也可外接磁吸键盘，应用应支持通过键盘实现焦点导航，并配置获焦视觉效果，清晰指示当前焦点位置，以保证交互体验。开发方案请参考[焦点事件](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-interaction#section168661941154220)。

#### \[h2\]音频焦点适配

折叠电脑上前后台应用需从以下四个方面处理音频焦点问题：[音频焦点抢占流程](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-audio-focus-management#section1747213761316)，[音频流类型正确配置](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-audio-focus-management#section2888185819153)，[自定义焦点策略设置](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-audio-focus-management#section048671914296)，[焦点中断事件正确处理](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-audio-focus-management#section1664171514332)。

音频焦点的管理机制与其他设备大体相同，主要区别在于系统默认策略不一样，开发者可参考[自定义焦点策略设置](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-audio-focus-management#section048671914296)查看电脑与其他设备间的差异。

#### 设备常见适配问题

#### \[h2\]设备类型区分

**如何区分MateBook Pro和MateBook Fold**

*   页面布局类问题：页面布局由窗口形态、窗口宽高、宽高比决定，无需区分具体产品型号或设备类型。例如：MateBook Fold横向展开态布局应与MateBook Pro保持一致；MateBook Fold其余状态对应lg横向断点，布局需与平板保持一致。因此布局适配只需判断断点、实现响应式布局即可，详情可参考[断点](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-responsive-layout#section1532120147301)的使用。
*   非页面布局或功能类问题：MateBook Pro与 MateBook Fold的设备类型[deviceType](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-device-info#常量)均为2in1。因此，需要通过[isFoldable()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displayisfoldable10)判断是否为可折叠设备，MateBook Fold返回true，MateBook Pro返回false。

#### \[h2\]页面异常

**折叠状态变化导致页面异常**

问题描述：当折叠电脑的折叠状态发生变化时，应用的页面布局出现异常。

可能原因：设备折叠状态发生变化时，窗口尺寸会同步改变。若应用未针对不同窗口尺寸适配页面布局，可能出现布局异常的问题。

解决措施：折叠电脑不同窗口尺寸的页面布局适配思路如下：

1.  使用[自适应布局](https://developer.huawei.com/consumer/cn/doc/best-practices/bpta-multi-device-adaptive-layout)或百分比大小实现页面布局，当窗口尺寸发生变化时，可自适应调整宽高；
2.  结合业务场景，通过[constraintSize](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-size#constraintsize)约束组件最小宽高，避免内容被截断；
3.  设置自由窗口的最小宽高，防止窗口过小导致界面异常。

#### \[h2\]窗口适配

**如何实现跨屏幕移动窗口**

问题描述：折叠电脑在半折叠状态（关闭全尺寸键盘）下，上下两块屏幕均可独立操作。如果想将位于下屏的应用跨屏移动到上屏，应该如何操作？

解决措施：使用[moveWindowToGlobal()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-window-window#movewindowtoglobal15)接口实现跨屏幕移动窗口，将窗口从下屏移动至上屏。详情可参考[窗口模式](#section8155133712178)章节。

**窗口变化时，应用对可用区域变化感知不及时**

问题描述：应用无法感知可用区域变化或感知存在延迟，直接调用moveTo()、resize()调整窗口大小或位置，导致窗口大小或位置异常。

解决措施：使用以下三种方法均可解决该问题：

*   调用[display.getDisplayByIdSync()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetdisplaybyidsync12)，根据displayId主动获取对应可用区域的[display](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#display)对象。
*   调用[display.getAvailableArea()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#getavailablearea12)，主动获取当前设备屏幕的可用区域。
*   注册[on('availableAreaChange')](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#onavailableareachange12)监听，实时监听设备屏幕可用区域的变化。

#### \[h2\]相机开发

**相机预览画面旋转异常**

问题描述：折叠电脑屏幕旋转后，相机预览画面显示异常。

可能原因：屏幕旋转后，相机预览流未适配旋转后的预览角度，导致预览画面未同步更新。

解决措施：折叠电脑在不同设备形态下，屏幕状态存在差异，因此相机预览输出的原始图像需调整对应旋转角度，保证画面方向正确。（预览旋转角度 = 镜头安装角度 + 屏幕显示补偿角度，其中屏幕显示补偿角度与屏幕旋转角度一致；如需获取镜头安装角度，可参考：[getSupportedCameras()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-camera-cameramanager#getsupportedcameras)）

*   相机预览旋转角度与屏幕显示旋转角度（[Display](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#属性).rotation）相关，适配步骤如下：
    
    1.  调用session.[commitConfig()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-camera-session#commitconfig11)完成配流。
    2.  通过[display.getDefaultDisplaySync()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#displaygetdefaultdisplaysync9)接口获取[Display](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-display#属性)对象并读取其rotation属性值，获得显示设备的屏幕旋转角度。
    3.  并根据[相机镜头安装角度](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/camera-rotation-term#相机镜头安装角度)+[屏幕显示旋转角度](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/camera-rotation-term#屏幕旋转角度)的值计算[预览旋转角度](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/camera-rotation-term#预览旋转角度)，可参考[相机硬件信息](#section9425185473318)确认对应数值。
    4.  再调用[setPreviewRotation()](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/arkts-apis-camera-previewoutput#setpreviewrotation12)接口，设置图像的预览旋转角度。
    
    具体开发指导可参考适配相机旋转角度-[预览](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/camera-rotation-angle-adaptation#预览)。
    
*   若三方应用对接预览流进行二次处理，导致无法直接使用系统的现有能力，将镜头安装角度补充到预览旋转角度中，可通过如下两种方案解决：
    *   若应用不需要非镜像成像，建议应用在预览流二次处理后，直接套用系统现有的角度计算方法，自行补偿相机镜头安装角度进行适配。
    *   若应用需要非镜像成像，建议应用在预览流二次处理后，自主实现角度计算逻辑进行适配。（非镜像成像场景下，自主适配的性能大大优于补偿相机镜头安装角度的方法）