迁移到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文件中定义。

相关推荐
驰骋工作流3 小时前
流程时效考核的表结构:从待办时限到 WF_CH 考核结果驰骋BPM驰骋低代码低代码工作流引擎
android·低代码·rxjava
传奇开心果编程5 小时前
【Flutter踩坑排雷】第7课:巨型 build 函数坑|全部 UI 写在同一个 build,维护难、隐性异常
android·flutter·ios·移动开发·跨平台·dart·声明式ui
方白羽9 小时前
Android 双开环境底层剖析与风控检测落地
android·安全·app
weixin_563371479 小时前
Android Studio 2024 版 Device Explorer 打开方法
android·ide·android studio
AIsoft_868912 小时前
职场音频文件怎么整理?录音APP有哪些用法
android·音视频
booboosui12 小时前
第一批个人 Agent 用户正在卸载,问题不在模型,在它住在哪儿
android
洞见前行12 小时前
点击图标到内容出现,你的 App 在这几秒里做了什么:Android 冷启动全链路优化实战
android·性能优化·android studio
凯基迪科技12 小时前
芯片UID绑定修改 加密与逆向修改思路分析
android
Liben13 小时前
Weex开发踩坑记录
android·前端·ios
救救孩子把15 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务