0Pricing
Android Academy · 课时

什么是可组合函数

用于描述 UI 的函数。

什么是可组合函数 是 CoddyKit 上的免费 Android Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Android Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Android Academy 课程共包含 4 节课。

什么是可组合函数

在 Jetpack Compose 中,您通过编写函数来构建屏幕,而不是填充 XML 布局。可组合函数就是一个描述用户界面某个部分的 Kotlin 函数。

您可以使用 @Composable 注解标记这类函数。这会告诉 Compose 编译器,该函数可以生成用户界面,也可以调用其他可组合函数。

@Composable 注解

在函数上方添加 @Composable,即可解锁 Compose 的强大功能。在函数内部,您可以调用其他可组合函数,例如 Text 或 Column。

按照惯例,可组合函数的名称以大写字母开头,就像类名一样。这样可以让您在代码中轻松识别用户界面函数。

@Composable
fun Greeting() {
    Text("Hello, Compose!")
}

使用 Kotlin 描述用户界面

可组合函数不会返回 View 对象。相反,当 Compose 运行它时,它会以副作用的形式生成用户界面。您只需描述屏幕上应该显示什么。

这称为声明式风格:您声明当前数据对应的用户界面样式,而 Compose 会计算出如何绘制它。

@Composable
fun WelcomeMessage() {
    Text("Welcome back!")
}

可组合函数调用可组合函数

真正的强大之处在于嵌套。可组合函数可以调用其他可组合函数,让您能够用小型、可复用的部分构建复杂屏幕。

这里,父可组合函数调用子可组合函数。Compose 会从上到下运行它们,并排列生成的用户界面。

@Composable
fun Header() {
    Text("My App")
}

@Composable
fun Screen() {
    Header()
}

没有返回值的函数

大多数可组合函数返回 Unit,也就是说,它们不会返回有用的内容。它们的任务是生成用户界面,而不是返回一个值。

因此,您调用可组合函数是为了让它影响屏幕,而不是获取一个结果。这与普通函数有所不同,但您很快就会习惯。

@Composable
fun Footer() {
    Text("\u00A9 2024 CoddyKit")
}

将数据作为参数传入

可组合函数可以接收参数,就像普通 Kotlin 函数一样。这样,同一个可组合函数就能显示不同的数据。

这里,Greeting 接收一个 name,并显示它。传入数据可以让您的可组合函数在整个应用中更加灵活且易于复用。

@Composable
fun Greeting(name: String) {
    Text("Hello, " + name + "!")
}

复用可组合函数

由于可组合函数本质上是函数,因此您可以使用不同参数多次调用同一个函数。每次调用都会生成一份独立的用户界面。

这就是避免重复编写的方法:只编写一次用户界面,然后在需要的地方复用它。

@Composable
fun NameList() {
    Greeting("Ada")
    Greeting("Linus")
}

可组合函数位于何处

您可以在 Android activity 中使用 setContent 放置可组合函数。该代码块是 Compose 接管屏幕的入口。

在 setContent 中调用顶层可组合函数,它生成的所有内容都会成为应用的用户界面。

setContent {
    Greeting("World")
}

重组基础

当可组合函数读取的数据发生变化时,Compose 会重新运行该函数来更新屏幕。这种重新运行称为重组。

您不需要手动更新用户界面。只需改变数据,Compose 就会自动重组受影响的可组合函数。这可以让屏幕与状态保持同步。

让可组合函数保持简洁

一个好习惯是让每个可组合函数只负责一项明确的工作。小而专注的可组合函数更容易阅读、测试和复用。

如果函数变得太大,请将其拆分为更小的可组合函数,然后组合调用它们。未来的您会感谢现在的这个决定。

@Composable
fun ProfileHeader(name: String) {
    Text(name)
}

您将看到的导入

可组合函数来自 Compose 库。您经常会导入 androidx.compose.runtime.Composable 作为注解,并导入 androidx.compose.material3.Text 用于显示文本。

Android Studio 通常会为您添加这些导入。了解它们的来源,有助于您处理缺少导入的问题。

import androidx.compose.runtime.Composable
import androidx.compose.material3.Text

快速检查

让我们复习一下,是什么使一个函数成为可组合函数。

回顾

您已经了解到,可组合函数是使用 @Composable 标记、以声明式方式描述用户界面的 Kotlin 函数。可组合函数可以接收参数、调用其他可组合函数,并且名称以大写字母开头。

它们返回 Unit,生成用户界面而不是返回值。当数据发生变化时,Compose 会重组它们来更新屏幕。接下来,您将显示实际文本,并使用 Column 垂直排列视图。

常见问题解答

「什么是可组合函数」课时是免费的吗?

是的 — 「什么是可组合函数」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Android Academy 课程的其余内容,请升级到 CoddyKit PRO。 Android Academy 课程共包含 4 节课。

「什么是可组合函数」这节课中我会学到什么?

用于描述 UI 的函数。 你通过在浏览器中直接运行的动手代码来练习 Android Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Android Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Android Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「什么是可组合函数」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Android Academy 课中编写并运行代码吗?

能。每节 Android Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 什么是可组合函数
  2. Text 与 Column 基础
  3. 预览您的 UI
  4. 构建个人资料卡片
← 返回 Android Academy