第1章 全新的Android UI框架

依据2022年首版完整目录覆盖18个节点:从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入

第1章 全新的Android UI框架

本页依据王鹏、关振智、曾思淇《Jetpack Compose从入门到实战》独立重构,不复制原文。版本锁定机械工业出版社2022年8月首版、331页、ISBN 9787111711377;得到电子版标注2022年7月发行。全书正式结构是11章、200个章/节/小节节点。

原书处在Compose快速演进的2022年。课程先复现书中的API、行为和项目边界,再把今天的替代方案写入迁移账本;不会用Material 3、类型安全路由或Foundation新API改写原目录。

学习目标

  • 能逐项解释“第1章 全新的Android UI框架”全部18个目录节点的输入状态、组合边界、布局或事件结果。
  • 能实现“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”的最小可运行切片,并保存源码、依赖版本、状态样本与测试证据。
  • 能区分正确结果、性能成本、生命周期故障和版本差异,并用状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界验收。
  • 能设计反例推翻“把声明式UI理解成少写XML,仍在组合期间执行I/O或手动命令式修改组件”,并完成2022年原书机制到现代Compose的迁移记录。

从状态开始

构成本页的核心词汇。Compose不是“自动更新一切”:只有被观察的状态读、稳定身份、正确Effect键和明确所有者共同成立,框架才能把变化限制在可解释范围。每个示例先写状态和事件,再画组合、布局、绘制与外部副作用边界。

本单元主线是从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入。交互管线用于逐层选择目录节点;反例实验在正常、状态抖动、错误身份、所有者销毁与版本漂移之间切换;证据门要求结构、状态、生命周期、可访问性和迁移五类证据全部通过。

权威目录逐节点映射

第1章 全新的Android UI框架

章节合同 1/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.1 Jetpack Compose是什么

主题边界 2/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.1.1 谷歌为什么要推出Compose

可执行检查点 3/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.1.2 命令式UI与声明式UI

可执行检查点 4/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.1.3 Compose API设计原则

可执行检查点 5/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.1.4 Compose与View的关系

可执行检查点 6/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.1.5 不只是Android UI框架

可执行检查点 7/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.2 搭建开发环境

主题边界 8/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.2.1 准备所需要的开发工具

可执行检查点 9/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.2.2 部署开发环境

可执行检查点 10/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.3 创建第一个Compose应用

主题边界 11/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.3.1 创建新的Compose项目

可执行检查点 12/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.3.2 保持Compose版本更新

可执行检查点 13/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.3.3 在模拟器中运行Compose应用

可执行检查点 14/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.3.4 分析第一个Compose应用

可执行检查点 15/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.3.5 对Compose应用进行预览

可执行检查点 16/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.3.6 已有项目引入Compose

可执行检查点 17/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

1.4 本章小结

主题边界 18/18。 本节点必须落实到“从声明式UI、Compose API原则与View关系,走到环境部署、首个应用、预览和已有项目接入”这条因果链中。学习时先写输入状态与预期界面,再记录组合、布局、绘制或事件结果;最终以状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界中的对应证据验收。不能只记住API名字。

可运行实现切片

下面代码只承担本章最小机制,不隐藏状态所有者和事件入口。真实项目还要补齐空态、错误态、恢复、可访问性与截图测试。

@Composable
fun Greeting(name: String) {
    Text(text = "Hello, $name")
}
 
@Preview(showBackground = true)
@Composable
fun GreetingPreview() = AppTheme { Greeting("Compose") }

实现后先断言业务结果,再观察组合或交互成本。把版本、设备、字体比例、窗口尺寸、主题和输入样本写进测试记录,才能分辨代码回归与环境差异。

data class ComposeProbe(
    val stateId: String,
    val recompositions: Int,
    val semanticsReady: Boolean,
    val ownerActive: Boolean
)
 
check(probe.semanticsReady)
check(probe.ownerActive)

迁移账本与回归合同

迁移不是“能编译”就结束。每一项记录原书API、2022年行为、现代替代、行为差异、验证样本和回退条件。尤其要覆盖状态恢复、手势阈值、返回栈、主题角色与第三方组件退役。

原书节点: 第1章 全新的Android UI框架
原书版本: Compose 2022 首版语境
现代候选: 待依赖矩阵验证
不变量: 状态结果、可访问语义、生命周期所有权
证据: 状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界
回退: 任一不变量失败即恢复原实现

本章回顾

回顾时不要从API清单开始,而要从一个状态变化或用户事件开始,依次回答谁拥有状态、哪些调用进入组合、约束如何传递、像素或导航结果怎样产生、外部工作何时取消。再用状态到UI映射、编译配置、预览与设备结果、版本目录、View与Compose双向边界复核;任何无法重放的结论都退回实验阶段。

复习与独立交接

练习

问题 1:本页为什么必须按18个目录节点学习?

问题 2:本页最小正确性合同是什么?

问题 3:哪个反例最能推翻错误实现?

问题 4:为什么一次截图或一次流畅运行不是证据?

问题 5:怎样升级Compose而不改写原书?

问题 6:独立交接需要哪些产物?

名词解释

本章出现的专业名词,用大白话再讲一遍。

声明式UI
以状态为输入描述界面结果,由框架负责把状态变化映射为界面更新。
Composable
由Compose编译器参与转换、可进入组合树的带Composable注解函数。
Slot API
通过内容lambda向调用者开放结构插槽而不是依赖继承扩展组件。
Preview
在受限设计时环境中渲染可组合函数并快速核对状态样本的工具。
互操作边界
Compose树与传统View树相互嵌入并传递状态、事件和生命周期的接缝。

← 上一页:《Jetpack Compose从入门到实战》权威学习地图 · 下一页:第2章 了解常用UI组件 →

资料与写作方式声明

本章以王鹏、关振智、曾思淇《Jetpack Compose从入门到实战》权威目录界定学习范围,并结合正文列出的技术资料独立重写;不宣称复现原书正文,也不沿用原作表述。

原作版权归作者与出版社所有;本站原创教学结构与表述仅供学习交流。

讨论

评论区加载中…