好久没有更新了,接下来一段时间的博客,是以View一步步迁移到Compose的教程。
一、简介
Compose和View系统可以结合使用。
下面将使用项目Sunflow的部分界面迁移到Compose。
1.1、学习内容
通过这一系列,您将学习:
- 您可以遵循的不同迁移路径
- 如何逐步将应用迁移到Compose
- 如何将Compose添加到使用Android View构建的现有界面
- 如何在Compose中使用Android View
- 如何在Compose中使用View系统中的主题
- 如何使用View系统代码和Compose代码测试界面
1.2、前提条件
- 有使用Kotlin语法(包括lambda)的经验
- 了解Compose的基础知识
1.3、所需条件
二、迁移计划
如何迁移到Compose取决于您和您的团队。要将Jetpack Compose集成到现有Android应用中,有多种不同的方法。常用的两种迁移策略为:
- 完全使用Compose开发一个新界面
- 选取一个现有界面,然后逐步迁移其中的各个组件。
2.1、新界面中的Compose
在重构应用代码以适应新技术时,一种常用的方法是在为应用构建新功能中采用该技术。在这种情况下,适合使用新的界面。如果您需要为应用构建新界面,请考虑使用Compose,而应用的额其余部分可以保留在View系统中。
在这种情况下,您需要在这些已迁移功能的边缘实现Compose互操作性。
2.2、搭配使用Compose和View
对于特定界面,您可以将部分界面迁移到Compose,让其他部分保留在View系统中。例如,您可以迁移RecyclerView,同时将界面的其余部分保留在View系统中。
或者,使用Compose作为外部布局,并使用Compose中可能没有的一些现有View,比如MapView或AdView。
2.3、完成迁移
将全部的fragment或界面迁移到Compose,一次迁移一个。这种方式最为简单,但比较粗放。
三、准备工作
3.1、获取代码
从 GitHub 获取 Codelab 代码:
shell
$ git clone https://github.com/googlecodelabs/android-compose-codelabs
或者,您可以下载代码库 Zip 文件:
四、Sunflow中的Compose
Compose已添加到您从main
分支下载的代码中。不过,我们先来了解一下运行这些代码所需要具备哪些条件。
打开app/build.gradle
(或build.gradle(Module: compose-migration.app)
)文件后,请查看该文件如何导入Compose依赖项,以及如何使用buildFeatures { compose true}
标记,从而让Android Studio能够运行Compose。
app/build.gradle
kotlin
android {
...
kotlinOptions {
jvmTarget = '1.8'
useId = true
}
buildFeatures {
...
compose true
}
composeOptions {
kotlinCompilerExtensionVersion rootProject.composeVersion
}
}
dependencies {
...
// Compose
implementation "androidx.compose.runtime:runtime: $rootProject.composeVersion"
implementation "androidx.commpose.ui:ui:$rootProject.composeVersion"
implementation "androidx.compose.foundation:foundation:$rootProject.composeVersion"
implementation "androidx.compose.foundation:foundation-layout:$rootProject.composeVersion"
implementation "androidx.compose.material:material:$rootProject.composeVersion"
implementation "androidx.compose.runtime:runtime-livedata:$rootProject.composeVersion"
implementation "androidx.compose.ui:ui-tooling:$rootProject.composeVersion"
implementation "com.google.android.material:compose-theme-adapter:$rootProject.composeVersion"
}
这些依赖项的版本在根目录下的build.gradle
文件中定义。