迁移到Jetpack Compose 第一趴

好久没有更新了,接下来一段时间的博客,是以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 文件:

下载 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文件中定义。

相关推荐
liyy61414 分钟前
Android架构组件:MVVM模式的实战应用与数据绑定技巧
android
K1t02 小时前
Android-UI设计
android·ui
吃汉堡吃到饱4 小时前
【Android】浅析MVC与MVP
android·mvc
深海呐10 小时前
Android AlertDialog圆角背景不生效的问题
android
ljl_jiaLiang10 小时前
android10 系统定制:增加应用使用数据埋点,应用使用时长统计
android·系统定制
花花鱼10 小时前
android 删除系统原有的debug.keystore,系统运行的时候,重新生成新的debug.keystore,来完成App的运行。
android
落落落sss12 小时前
sharding-jdbc分库分表
android·java·开发语言·数据库·servlet·oracle
消失的旧时光-194314 小时前
kotlin的密封类
android·开发语言·kotlin
服装学院的IT男15 小时前
【Android 13源码分析】WindowContainer窗口层级-4-Layer树
android
CCTV果冻爽16 小时前
Android 源码集成可卸载 APP
android