先决条件:熟悉 Kotlin 的语法。
下载 Android Studio , https://developer.android.google.cn/?hl=zh-cn, 下载完成后,安装基本点击 「Next」即可:

新建项目:



设置:


设置编辑区字体大小:

SDK:

Gradle:

如果重新设置了 gradle 保存目录,则需要在项目中同步 gradle 文件:

模拟器:



运行项目:

资料:
先决条件:熟悉 Kotlin 的语法。
下载 Android Studio , https://developer.android.google.cn/?hl=zh-cn, 下载完成后,安装基本点击 「Next」即可:

新建项目:



设置:


设置编辑区字体大小:

SDK:

Gradle:

如果重新设置了 gradle 保存目录,则需要在项目中同步 gradle 文件:

模拟器:



运行项目:

资料:
compose 版本:
https://developer.android.google.cn/jetpack/androidx/releases/compose?hl=zh-cn
1 | implementation platform('androidx.compose:compose-bom:2023.05.00') |
Text 是 androidx.compose.material3.Text 中的控件,用来显示文本内容,ClickableText 用于显示文本内容中部分内容需要添加点击事件。
1 |
|


知识点:
1、获取 context: val context = LocalContext.current;
2、textAlign 设置文本对齐方式,默认是向左对齐,可以通过 textAlign = TextAlign.Center 等设置对齐方式;
3、color = Color.Blue 设置文本颜色;
4、fontStyle = FontStyle.Italic 设置字体样式;
5、fontFamily = FontFamily.Cursive 设置字体;
6、fontWeight = FontWeight.ExtraBold 设置字体粗细;
7、fontSize = 32.sp 设置字体大小;
8、 maxLines = 1, overflow = TextOverflow.Ellipsis 设置最多显示几行,以及超过时的处理方式
9、ClickableText
示例代码: https://github.com/hefengbao/jetpack-compose-demo.git
提升:
Image 用于显示图片,是 androidx.compose.foundation.Image 中的控件。文档:https://developer.android.google.cn/jetpack/compose/graphics/images?hl=zh-cn 。
最基本的是显示图标(Icon),Compose 的 androidx.compose.material.icons 包提供了常用的图标,默认以引入项目,如果要使用更多,可以引入扩展包:
1 | implementation("androidx.compose.material:material-icons-extended") |

要查找那些图标可用,按如下步骤操作:


找到要使用的图标,记住名称,比如 add,则可以通过 androidx.compose.material.icons.Icons.Default.Add 使用,具体看下面代码。
要加载网络图片,推荐使用 Coil 库:
1 | implementation("io.coil-kt:coil:2.4.0") |
1 |
|
知识点:
1、imageVector 使用 androidx.compose.material.icons.Icons 图标;
2、painter 配合 painterResource 加载 res/drawable 目录下的图标;
3、圆形头像,添加圆角,contentScale 设置图片的填充方式等参考文档:https://developer.android.google.cn/jetpack/compose/graphics/images/customize?hl=zh-cn ;
4、 Coil 提供的 AsyncImage 加载网络图片。
compose 版本:
https://developer.android.google.cn/jetpack/androidx/releases/compose?hl=zh-cn
implementation platform(‘androidx.compose:compose-bom:2023.05.00’)
TextField 是 androidx.compose.material3.TextField 中的控件,OutlinedTextField 是 androidx.compose.material3.OutlinedTextField中的控件,用来编辑文本等。
1 |
|
知识点:
1、状态管理,文档:https://developer.android.google.cn/jetpack/compose/state?hl=zh-cn ,在上面的示例代码中, var account by rememberSaveable { mutableStateOf("") } 用来初始化和保存账号数据,如果是编辑的话,可能就是这样: var name by rememberSaveable { mutableStateOf("8ug_icu") }。
2、label 设置标签,placeholder 设置提示。
3、enabled 设置是否可编辑,实际使用中,也是通过状态管理来处理逻辑:
1 | var enabled by rememberSaveable { mutableStateOf(false) } |
4、密码输入框:
1 | keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), |
Coil 是一个 Android 图片加载库,通过 Kotlin 协程的方式加载图片。
官方文档:https://coil-kt.github.io/coil/README-zh/
首先引入 Coil 包:
1 | implementation("io.coil-kt:coil:2.4.0") |
Coil 提供了 AsyncImage 控件,直接使用即可:
1 |
|
Coil 加载图片时的圆角处理,使用 Modifier 的 clip() 方法,官方提供了 CircleShape 处理显示为圆形,还可以使用 RoundedCornerShape(16.dp) 指定圆角大小。
示例代码:https://github.com/hefengbao/jetpack-compose-demo.git 中的 ImageScreen.kt 。
1 | val context = LocalContext.current |
1 | val lifecycle = LocalLifecycleOwner.current.lifecycle |
1 | val uriHandler = LocalUriHandler.current |
打开网址:
1 | uriHandler.openUri("https://www.8ug.icu") |
1 | val keyboard = LocalSoftwareKeyboardController.current |
隐藏软键盘:
1 | keyboard?.hide() |
1 | LocalAccessibilityManager.current |
Jetpack Compose Image 显示矢量(vectorDrawables)图标(Icon),分 imageVector 和 painter 两种方式。
使用系统提供的图标,首先是找到想要用的 Icon:


以 imagevector 的方式使用可参考 Jetpack Compose 入门: Image。
对Jetpack Compose 入门: Image 的一些补充说明:
Jetpack Compose 库,要引入 Compose 的版本,指定 compose-bom 即可,然后确定使用 material3 还是 material, material-icons-extended 等的版本不需要特别指定,代码如下:
1 | implementation platform('androidx.compose:compose-bom:2023.05.00') |
简单的示例代码:
1 | Image( |
用于绘制 main/res/drawable 目录下的图标,不仅可以使用官方提供的 Icon,还可以是其他想要使用的图标。
使用官方提供的 Icon,还需要做如下操作:



多少还是有些麻烦,使用官方提供的 Icon , 推荐以 imageVector 的方式。
如果是自己设计的图标,如果是矢量图,放在 main/res/drawable 目录下,如果是其他格式如png、webp 等,按分辨率设计多张分目录如 main/res/drawable-xhdpi 放置会更好。
示例代码:
1 | Image(painter = painterResource(id = R.drawable.baseline_add_24), contentDescription = "painterResource") |
之前的两篇文章 Jetpack Compose 入门: Image 、Jetpack Compose 入门:Image 使用 Icon (vectorDrawables) 中写了使用 Image 组件显示图标,还有个 Icon 组件可以用来显示图标,示例代码:
1 |
|
参数说明:
1、painter、imageVector、bitmap 用于指定要显示的图标,painter 和 imageVector 显示的是 ImageVector, 而 bitmap 显示的是 ImageBitmap,两者的区别请参考下方的文档及说明,尤其要注意的是 painter 、bitmap 显示的图标都在 drawable 目录下;
2、contentDescription:添加描述,可以为 null;
3、modifier :添加 Modifier 属性;
4、tint :修改 Icon 的颜色
参考文档:

从这里生成的 Icon(xml 文件) 一定是 ImageVector,而 png、jpeg 等文件则为 ImageBitmap。
按钮 Button 是 material3(androidx.compose.material3.Button)组件,常用的还有 OutlinedButton、TextButton、IconButton、FilledTonalButton、ElevatedButton。
1 |
|
基本属性:
1 |
|
参数:
enabled 是否启用或禁用;
elevation 高度;
shape 形状,ButtonDefaults.outlinedShape、ButtonDefaults.textShape、ButtonDefaults.filledTonalShape、ButtonDefaults.elevatedShape,其实提供了对应的组件: OutlinedButton、TextButton、FilledTonalButton;ElevatedButton
border 边框线;
colors 设置颜色,可以设置背景颜色、前景颜色、禁用状态和启动状态下的颜色;
contentPadding 内容内间距;
content 默认是 RowScope.() 即 Row。

RadioButton、Checkbox、Switch 是 Material3 组件:androidx.compose.material3.Checkbox、androidx.compose.material3.RadioButton、androidx.compose.material3.Switch。
示例代码:
1 |
|
要点就是状态处理:
RadioButton:selected, onClick;
Checkbox:checked、onCheckedChange;
Switch:checked、onCheckedChange;