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

Jetpack Compose 入门指南

一、前言

伴随着2026年5月Android官方宣布Android UI开发进入“Compose优先”时代,传统的手写XML方式在现代Android开发中不再是首选或唯一的方案。现代 Android UI开发的趋势是使用声明式UI框架,即Jetpack Compose

在上一篇文章里,我们介绍了Compose 的背景和基本概念【参考第一篇:Jetpack Compose前探】。本篇将带领读者从零开始,创建并运行第一个Compose程序。

二、环境准备

2.1 搭建开发环境

开发Android项目,我们首选IDE就是使用Android Studio,官网下载地址:

  • https://developer.android.google.cn/studio

根据你的操作系统选择对应的平台下载安装。具体安装细节可咨询AI助手,本文不做展开。

本文案例使用的 Android Studio 版本是 Panda 4:

三、第一个Compose程序

3.1 创建项目

打开已安装好的 Android Studio,选择【New Project】,进入项目模板页面,设备类型我们选择Phone and Tablet,模板选择Empty Activity

点击Next,进入项目信息配置页面。

  • Name:表示项目名称,同时也是APP名称
  • Package Name:表示包名,每个APP都有唯一的包名标识
  • save location:表示项目在本地设备的存储路径
  • Minimum SDK:表示项目支持的最小Android版本
  • Build configuration language:表示 Gradle 构建脚本的语言,Android支持Kotlin DSLGroovy DSL

点击Finish,等待 Android Studio 自动生成项目,首次生成可能需要一些时间下载依赖。完成后的IDE内容如下图所示。

3.2 运行项目

项目生成后,可以使用模拟器或真机运行刚刚创建的项目。

应用成功安装并启动后,界面默认显示"Hello Android"。我们试着去修改代码,将显示内容修改为"Hello World"。

再次运行,界面成功显示了"Hello World"。

到此为止,我们已经成功创建并运行了一个Compose项目。

3.3 分析演示程序

有过传统 Android 开发经验的小伙伴,第一次接触Compose可能会很不习惯——下意识地去查找/res/layout目录下的activity_main.xml,却发现该目录并不存在。这也是Compose UI编程和传统Android View UI编程不一样的地方。

那么,我们来分析下 Android Studio 使用模板自动生成的这些代码都是什么意思?

和传统方式创建的项目一样,我们一眼可以看到一个叫MainActivity.kt的文件——依旧作为APP的第一个界面。打开MainActivity.ktIDE显示内容如下,里面有熟悉也有很多陌生的词,我们拣陌生的给大家解释。

代码片段解释说明
ComponentActivityCompose项目默认使用的不是AppCompatActivity,而是androidx.activity.ComponentActivity,它专为 Jetpack架构组件和Compose设计,提供了更好的生命周期支持。
enableEdgeToEdge启用“边缘到边缘(Edge-to-Edge)”显示模式,UI 内容可以延伸到屏幕顶部状态栏和底部导航栏区域,更好实现沉浸式布局效果。
setContent {…}替代了传统的setContentView(R.layout.xxx),它将Compose UI内容注入到Activity中,是 Compose 应用的入口。
MyApplicationTheme {…}自定义主题Composable函数,类似于XML中的android:theme="@style/AppTheme"。默认命名规则是【项目名】+ Theme。
ScaffoldMaterial 3 设计规范提供的一个帮助规范页面布局的组件,可以把TopAppBarNavigationBarExtendedFloatingActionButton等直接摆放到Scaffold预留的位置上。
Modifier修饰符,官方描述是“一个有序的、不可变的修饰元素集合”,用于给Compose UI元素添加装饰或者行为,如设置边距、大小、点击事件等。
Greeting(…)自定义的一个可组合函数,参数name=Worldmodifier = Modifier.padding(innerPadding)
@ComposableCompose 的核心注解,标记一个函数为可组合函数。只有标记了@Composable的函数才可以被setContent{}或其他 Composable 中调用。
Text()Jetpack Compose 的基础文本显示组件,功能相当于Android View 中的TextView
@PreviewCompose Preview 预览注解,有了它可以在AndroidStudio中直接预览UI效果,无需运行APP,相当于Android View时 XML 中的Split预览功能。showBackground=true,表示显示背景色。

3.4 预览Compose

上面的表格里解释了@Preview的作用,本小节来详细看看@Preview的演示效果。

除了运行APP查看界面UI效果,Compose还提供了更高效的UI调试方式——@Preview预览。在可组合函数上添加@Preview注解,Android Studio 便会直接在编辑器中渲染UI预览,无需启动模拟器或真机,极大提升了UI开发效率。

Gif 示例如下所示:

四、声明式UI的核心思想

声明式UI的核心思想概况为UI是状态的函数
U I = f ( s t a t e ) UI = f(state)UI=f(state)
它不是Compose 独有的,而是借鉴于React等前端生态。Flutter、SwiftUI等现代跨平台UI框架均遵循这一范式。它代表了UI开发从“命令式”到“声明式”的根本性范式转移。

💡为什么放弃命令式UI?不是盲目追随技术潮流,而是为了解决“状态与界面同步”这一困扰开发者多年的基础性问题。

4.1 命令式UI VS 声明式UI

命令式UI的核心是“如何做”。开发者手动控制UI的每个细节:通过findViewById获取视图对象,然后调用setText()setVisibility()等方法一步步驱动UI变更。简单页面还好控制,但随着界面复杂度上升,状态同步的难度也呈指数级增长。

声明式UI的核心是“要什么”。开发者只需要根据当前状态描述UI“应该是什么样子”,框架会自动完成UI渲染与更新。当状态发生变化时,Compose会自动重新执行可组合函数,生成新的UI——这个就是重组

4.2 理解 UI = f(State)

  • State(状态):应用的数据,是随着时间变化的任何值。如网络请求结果、数据库数据、用户输入内容等等。
  • f(函数):开发者写的Compose UI代码,即@Composable标记的可组合函数。这些函数接受状态作为参数,描述UI应该是什么样。
  • UI(界面):最终屏幕上显示的内容。

五、参考资料

  • https://developer.android.google.cn/studio?hl=zh-cn
  • https://developer.android.google.cn/develop/ui/compose/documentation?hl=zh-cn
  • https://developer.android.google.cn/develop/ui/compose/tutorial?hl=zh-cn
http://www.jsqmd.com/news/1091238/

相关文章:

  • Flink 实时数仓开发实战:Catalog 快照,让 DDL 只写一次
  • MSPM0定时器实战:QEI编码器解码与PWM电机控制全解析
  • 吸氢机流量会虚标吗?3个家用检测方法,轻松识破行业猫腻
  • OpenCode 个人习惯设置大全
  • OBS-ASIO插件终极指南:实现专业音频设备的低延迟录制与直播
  • 宏与函数的本质区别(理解场景的前提)
  • 深入解析EASY-HWID-SPOOFER:内核级硬件信息修改技术实现
  • CompressO:免费开源跨平台媒体压缩工具终极指南
  • GD32F303串口驱动开发:从寄存器到中断与环形缓冲区的实战解析
  • 如何3分钟快速安装TrollStore:TrollInstallerX全面指南
  • 创维E900V22C电视盒子刷机指南:三步变身专业4K媒体播放器
  • 客户细分化技术中的聚类分析分类模型与细分策略
  • 3分钟快速上手:用Barrier实现一套键鼠控制多台电脑的终极方案
  • 2026博尔塔拉黄金回收白银回收铂金回收旧料回收怎么选?五家高实价铂金白银线下门店测评清单 + 联系方式
  • Redis 内存分配器调优方案
  • PySpark实战:从数据清洗到模型部署的泰坦尼克号幸存者预测完整流程
  • 江协的51单片机的学习
  • STK与MATLAB联动实战:Walker星座建模与参数解析
  • SQLModel零基础教程(二)- 字段高级配置 数据校验,复用Pydantic能力
  • Vivado HLS高层次综合的设计理念
  • 重磅官宣!射击冠军张梦影签约爱依克品牌形象大使。
  • 配方灵活调配需求选天伟生物或单品类发酵企业分析
  • OpenMontage:一站式AI视频生成全链路开源工具部署与应用指南
  • C++ 命名空间(namespace)全方位实战教学(零基础入门到工程高阶)
  • OpCore-Simplify:黑苹果配置的终极简化指南,3步完成专业级EFI构建
  • 【深度学习】OpenCV 实战:从图片中精确提取扇子区域
  • 告别快餐式传奇!冰雪传奇点卡版以经典公平机制留住玩家
  • [深圳] SHEIN 内推:算法/大模型/后端/数据/安全/测试/iOS,20-80k
  • 告别路径迷宫:一站式配置VSCode智能路径解析与跳转
  • 从零构建WordPress渗透测试靶场:实战演练与安全加固