Jetpack Compose 从入门到入门
Posted 唯鹿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jetpack Compose 从入门到入门相关的知识,希望对你有一定的参考价值。
Jetpack Compose 是用于构建原生 android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API,可以帮助您简化并加快 Android 界面开发,打造生动而精彩的应用。它可让您更快速、更轻松地构建 Android 界面。
Jetpack Compose 1.0发布也有一段时间,虽然了解的比较早,但并没有系统的去学习过。因为写过Flutter,所以我个人是很喜欢这种声明式编程。所以接下来准备好好学一下,同时记录下来。
标题叫从入门到入门,可不是你搁这搁这呢。。。主要是我也是边学边记录,不清楚最终可以深入到什么程度,就先不要给自己太大压力了。闲话不多说,开始今天的内容。
1. 准备工作
Jetpack Compose 1.0的预览、构建等都需要开发工具的支持,所以至少需要使用Android Studio Arctic Fox
。
其次是它只能使用kotlin语言开发,所以需要你掌握kotlin语法。
2.项目配置
这里我们可以用AS新建项目里面的Empty Compose Activity
模板去了解相关配置。
在这个模板项目中,可以看到一些相关配置:
// 插件
dependencies
classpath "com.android.tools.build:gradle:7.0.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.10"
// 依赖
dependencies
implementation "androidx.compose.ui:ui:1.0.0"
implementation "androidx.compose.material:material:1.0.0"
implementation "androidx.compose.ui:ui-tooling-preview:1.0.0"
debugImplementation "androidx.compose.ui:ui-tooling:1.0.0"
// 配置
buildFeatures
compose true
composeOptions
kotlinCompilerExtensionVersion '1.0.0‘
kotlinCompilerVersion '1.5.10'
3.项目代码
还是上面的模板代码,我们简单看看代码。
首先发现没有了layout文件夹,自定义的样式都在ui.theme
包下。我们看下这部分代码:
可以看到就是颜色、文字样式、主题的配置。对于写过Flutter的我来说,甚至有一丝丝熟悉。下来看一下重头的MainActivity代码:
先忽略具体ui代码,先了解一下图中这两个注解:
@Composable
注解。所有与Compose有关的函数都必须添加这个注解,这个注解让Compose编译器把数据转换成UI。@Preview
注解。实现UI的预览功能,甚至可以做简单的交互。例如在预览对象中点击元素、模拟用户输入,甚至还可以播放动画。
4.预览
下面介绍一下@Preview
注解,源码如下:
@MustBeDocumented
@Retention(AnnotationRetention.SOURCE)
@Target(
AnnotationTarget.FUNCTION
)
@Repeatable
annotation class Preview(
val name: String = "",
val group: String = "",
@IntRange(from = 1) val apiLevel: Int = -1,
// TODO(mount): Make this Dp when they are inline classes
val widthDp: Int = -1,
// TODO(mount): Make this Dp when they are inline classes
val heightDp: Int = -1,
val locale: String = "",
@FloatRange(from = 0.01) val fontScale: Float = 1f,
val showSystemUi: Boolean = false,
val showBackground: Boolean = false,
val backgroundColor: Long = 0,
@UiMode val uiMode: Int = 0,
@Device val device: String = Devices.DEFAULT
)
name
:设置预览的名称,方便在面板中识别它。group
:设置预览分组,便于分组显示。widthDp
/heightDp
:设置预览宽高。locale
:设置语言区域,便于测试多语言。fontScale
:文字缩放。showBackground
:是否显示背景。backgroundColor
:设置背景色。showSystemUi
:是否显示系统界面。uiMode
:设置ui模式,例如暗黑模式。device
:预览中指定设备。
下面是一些属性使用示例:
上面的例子中,每个预览函数都需要单独书写,也不能传参,显得很不灵活。那么使用@PreviewParameter
注解,可以将示例数据传递给预览函数。
同时需要实现 PreviewParameterProvider
类,并以序列形式返回示例数据。
class TextPreviewParameterProvider : PreviewParameterProvider<String>
override val values = sequenceOf(
"Elise",
"Frank",
"Julia"
)
@Preview(showBackground = true, group = "name")
@Composable
fun UserNamePreview(
@PreviewParameter(TextPreviewParameterProvider::class) name: String
)
MyApplicationTheme
Greeting(name)
预览效果:
5.预览交互模式
@Preview
的交互模式目前在AS北极狐版本上默认是关闭状态,所以你需要在设置中打开。
这里我使用了Jetpack Compose basics文中的例子来演示一下交互模式效果。
可以看到不需要在手机运行,就可以进行列表的滑动、按钮的点击,动画的效果预览。
最后,如果你想将 @Preview 部署到模拟器或真机上面,可以直接点击边线的“运行”图标:
本篇先简单了解一些Compose 工具,工欲善其事必先利其器。下篇就可以开始布局相关内容,到此,本篇结束。
6.参考
以上是关于Jetpack Compose 从入门到入门的主要内容,如果未能解决你的问题,请参考以下文章