适配未来的形态
Android 设备形态正在发生剧变。Jetpack WindowManager 是连接传统 UI 与折叠屏、多窗口环境的桥梁。 本交互式报告将带您深入理解核心 API、折叠姿态(Postures)以及响应式布局策略。
为什么需要 WindowManager?
传统的 DisplayMetrics 已经失效。随着折叠屏出货量的激增,应用界面不再只是简单的矩形。
设备可能在运行时改变物理形态(如从“手机”变为“平板”),或者中间出现物理铰链遮挡。
WindowManager 库提供了一套标准的 API 来处理这些复杂的窗口环境。
- ⬤ 感知折叠特征: 识别铰链位置、类型(折叠 vs 铰接)。
- ⬤ 窗口大小主要变化: 不再依赖物理屏幕尺寸,而是关注当前窗口(Window)的 Metrics。
- ⬤ 向后兼容: 支持从 Android 4.0 (API 14) 开始的设备。
全球折叠屏设备出货量预测 (百万台)
数据来源:行业综合分析 (模拟数据)
FoldingFeature 状态模拟器
FoldingFeature 对象描述了显示屏中的折叠部分。通过下方的控制器,改变虚拟设备的物理状态,观察 WindowManager 识别到的关键数据变化。
物理姿态 (Device Posture)
API 数据流
// 等待交互...
WindowMetrics 与断点系统
不要再使用物理屏幕尺寸。Android 推荐使用 WindowSizeClass 将窗口分为 Compact (紧凑), Medium (中等), Expanded (展开) 三类。 拖动下方滑块,体验布局如何随窗口尺寸变化而重构。
Compact (width < 600dp)
典型的手机竖屏。使用单列布局,底部导航栏。
Medium (600dp ≤ width < 840dp)
折叠屏展开态或小型平板。可尝试简单的双列布局或侧边栏。
Expanded (width ≥ 840dp)
桌面大屏或大型平板。必须使用 Master-Detail 布局,利用剩余空间。
Activity Embedding (活动嵌入)
对于许多旧项目,将所有 Activity 重构为 Fragment 成本巨大。 Activity Embedding 允许在从不重构代码的情况下,让多个 Activity 在大屏设备上并排显示。 系统会自动处理 Activity 栈。
1 配置 XML 规则
定义 SplitPairRule,告诉系统哪些 Activity 应该成对出现(例如 ListActivity 和 DetailActivity)。
2 占位符 (Placeholder)
当用户还没点击列表项时,右侧显示什么?配置 SplitPlaceholderRule 来展示默认内容。
请选择左侧邮件查看详情
(Placeholder Activity)