什么是 Jetpack Compose
了解 Android 中的声明式用户界面
什么是 Jetpack Compose 是 CoddyKit 上的免费 Android Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 4 节课。
什么是 Jetpack Compose
Jetpack Compose 是 Android 用于构建原生用户界面的现代工具包。您无需编写 XML 布局文件,而是直接在 Kotlin 代码中描述用户界面。
Compose 是声明式的:您告诉它在给定状态下屏幕应该呈现什么样子,它会自行确定如何绘制和更新界面。
传统方式:XML 视图
传统上,一个 Android 屏幕需要两部分:
- 描述控件的 XML 布局文件。
- 使用
findViewById查找并修改这些视图的 Kotlin/Java 代码。
保持 XML 和代码同步既繁琐又容易出错。
<!-- res/layout/activity_main.xml -->
<TextView
android:id="@+id/greeting"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />命令式与声明式
使用 XML 视图时,您编写的是命令式代码:获取一个视图,然后逐步修改它。
使用 Compose 时,您编写的是声明式代码:将最终结果描述为数据的函数。数据发生变化时,Compose 会自动重绘所需的内容。
// Imperative (old views)
val tv = findViewById<TextView>(R.id.greeting)
tv.text = "Hello"
tv.visibility = View.VISIBLE可组合函数
Compose 的构建块是可组合函数:一种带有 @Composable 注解、能够生成用户界面的普通 Kotlin 函数。
可组合函数可以调用其他可组合函数,让您通过小型可复用部件构建屏幕。
@Composable
fun Greeting(name: String) {
Text(text = "Hello, $name!")
}不再使用 findViewById
Compose 中没有 findViewById,也没有视图 ID。用户界面就是函数调用本身。要显示不同的文本,只需传入不同的参数,让 Compose 重新组合即可。
@Composable
fun Screen() {
Greeting(name = "Ada")
Greeting(name = "Linus")
}作为状态函数的用户界面
一个核心理念是:UI = f(state)。屏幕是可组合函数根据当前状态生成的输出。改变状态后,同一个函数就会生成新的用户界面。
这样可以让用户界面更可预测,也更容易理解和维护。
一切都是 Kotlin
由于可组合函数是 Kotlin 函数,您可以使用循环、条件语句和变量来构建用户界面。无需特殊的模板语言。
@Composable
fun Items(names: List<String>) {
for (n in names) {
Text(text = n)
}
}更少的样板代码
Compose 移除了大量胶水代码。无需 XML 膨胀,无需为简单列表编写适配器,也无需手动连接布局与逻辑。
结果是:更少的文件和更少的错误。
与视图系统互操作
您不必重写整个应用。Compose 可以与旧版 View 系统互操作。您可以将 Compose 嵌入现有的 XML 屏幕,也可以将 View 嵌入 Compose。
这样,团队就能逐步完成迁移。
您需要什么
要使用 Compose,您需要:
- 较新版本的 Android Studio。
- Gradle 文件中的 Compose 依赖项。
- 调用
setContent { }以承载可组合函数的活动。
一个小型屏幕
下面是一个完整的最小 Compose 屏幕。setContent 是从 Android Activity 进入 Compose 世界的桥梁。
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Greeting(name = "World")
}
}
}快速检查
哪一项最准确地描述了 Jetpack Compose?
回顾
您已经了解到,Jetpack Compose 是一个声明式、以 Kotlin 为核心的用户界面工具包。主要理念包括:
- 用户界面由
@Composable函数组成。 - 无需 XML,也无需
findViewById。 - UI = f(state) — 改变状态,Compose 就会重绘界面。
常见问题解答
「什么是 Jetpack Compose」课时是免费的吗?
是的 — 「什么是 Jetpack Compose」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 4 节课。
「什么是 Jetpack Compose」这节课中我会学到什么?
了解 Android 中的声明式用户界面 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Android Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「什么是 Jetpack Compose」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Android Academy 课中编写并运行代码吗?
能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 什么是 Jetpack Compose
- 您的第一个可组合函数
- 文本、图像和按钮
- 预览和热重载