当前位置: 首页 > news >正文

用 Jetpack Compose 写 Android 的 “Hello World”

“每一个伟大的 App 都始于一句 Hello World。”

如果你刚打开 Android Studio,准备迈入 Jetpack Compose 的世界,那么恭喜你——这篇文章就是为你准备的。我们将用最简洁的代码,带你跑通第一个 Compose 程序,并解释背后到底发生了什么。

目录

  1. 为什么选 Jetpack Compose?
  2. 准备开发环境
  3. 代码逐行解读
    3.1 MainActivity 为什么继承 ComponentActivity
    3.2 enableEdgeToEdge() 是干什么的?
    3.3 @ComposableText() 是什么魔法?
    3.4 @Preview 如何实时预览?
  4. 运行 & 调试小技巧
  5. 下一步做什么?

  1. 为什么选 Jetpack Compose?

过去写 Android UI,我们需要 XML 布局 + Activity/Fragment 的“双语言”模式。Jetpack Compose 把声明式 UI 带到了 Android,让我们用 纯 Kotlin 就能写完界面+逻辑,代码更少、实时预览更快、状态管理也更自然。


  1. 准备开发环境

  1. Android Studio Koala 或更高版本(Compose 需要新版 IDE 的实时预览支持)。
  2. 新建项目时选择 Empty Activity (Compose) 模板,Gradle 会自动帮你拉好 compose_bom 等依赖。
  3. 确保 build.gradle 里至少包含:
    implementation(platform("androidx.compose:compose-bom:2024.06.00"))
    implementation("androidx.compose.ui:ui")
    implementation("androidx.compose.material3:material3")
    

  1. 代码逐行解读

class MainActivity : ComponentActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)enableEdgeToEdge()                // 1️⃣setContent {                     // 2️⃣MessageCard("Android")}}@Composable                        // 3️⃣fun MessageCard(name: String) {Text(text = "Hello $name!")}@Preview                          // 4️⃣@Composablefun PreviewMessageCard() {MessageCard(name = "Android")}
}

3.1 ComponentActivity 是什么?

ComponentActivity 是专门为 Compose 设计的 Activity 基类,内部实现了 LifecycleOwnerViewModelStoreOwner 等接口,省去我们手动桥接 Compose 与旧架构的麻烦。

3.2 enableEdgeToEdge()

在 Android 15 开始,系统默认会在状态栏/导航栏加半透明遮罩。
enableEdgeToEdge() 让应用内容延伸到整个屏幕,再配合 WindowInsets 调整内边距,就能做出“沉浸式”布局。

3.3 @Composable 函数

  • @Composable 注解告诉编译器:这是一个 UI 函数,可以被重组(recompose)。
  • Text(...) 是 Compose 内置的最基础控件,相当于传统 View 体系中的 TextView
  • 参数 name 让我们把“谁向谁打招呼”抽象出来,方便复用和测试。

3.4 @Preview

在 Android Studio 右侧的 Split/Design 视图中,只要加上 @Preview 注解的 @Composable 函数,就能实时看到渲染效果,无需真机运行。改一行字,预览 1 秒刷新,开发效率大幅提升。


  1. 运行 & 调试小技巧

  • 热重载 (Live Edit):确保 Settings → Live Edit → 勾选 “Push Edits Manually”,代码修改后按 Ctrl+S 立即生效,比传统 Instant Run 快得多。
  • 日志:在 MessageCard 里加一行 Log.d("Compose", "Recomposing $name"),观察重组频率。
  • 深色模式:在 Preview 里再加一个注解 @Preview(uiMode = Configuration.UI_MODE_NIGHT_YES),一键查看夜间效果。

  1. 下一步做什么?

  1. Text 换成 ColumnRowCard 等布局,体验 Compose 的声明式排版。
  2. remember { mutableStateOf(...) } 加个小计数器,感受状态驱动 UI。
  3. MessageCard 提取到单独文件,学会模块化 UI 组件。
  4. 引入 Navigation for Compose,做一个两页面跳转的 Demo。

结语

短短 30 行代码,我们已经完成了:

  • 全屏显示
  • 声明式 UI
  • 实时预览
  • 可组合、可测试的组件

这就是 Jetpack Compose 的魅力:没有 XML、没有 findViewById,一句 Hello World 就能带你飞。祝你编码愉快,下一篇博客见!

http://www.xdnf.cn/news/1159615.html

相关文章:

  • SSE和WebSocket区别到底是什么
  • linux shell从入门到精通(一)——为什么要学习Linux Shell
  • MongoDB多节点集群原理 -- 复制集
  • 《杜甫传》读书笔记与经典摘要(一)
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • 【算法训练营Day15】二叉树part5
  • LVS-----TUN模式配置
  • 【LeetCode刷题指南】--反转链表,链表的中间结点,合并两个有序链表
  • 【原创】微信小程序添加TDesign组件
  • tabBar设置底部菜单选项、iconfont图标(图片)库、模拟京东app的底部导航栏
  • 零基础学习性能测试第三章:执行性能测试
  • Windows CMD(命令提示符)中最常用的命令汇总和实战示例
  • 30天打牢数模基础-SVM讲解
  • Python 单例模式几种实现方式
  • Dify 1.6 安装与踩坑记录(Docker 方式)
  • ZooKeeper学习专栏(二):深入 Watch 机制与会话管理
  • 【单片机外部中断实验修改动态数码管0-99】2022-5-22
  • 大语言模型:人像摄影的“达芬奇转世”?——从算法解析到光影重塑的智能摄影革命
  • Vuex 核心知识详解:Vue2Vue3 状态管理指南
  • 【设计模式C#】享元模式(用于解决多次创建对象而导致的性能问题)
  • TypeScript 中替代 Interface 的方案
  • 17.TaskExecutor与ResourceManager交互
  • 对粒子群算法的理解与实例详解
  • 系统思考:整体论
  • 5.2.4 指令执行过程
  • 基于FPGA的多级流水线加法器verilog实现,包含testbench测试文件
  • Muon小记
  • 【unitrix】 6.9 减一操作(sub_one.rs)
  • 数据结构与算法汇总
  • Twisted study notes[2]