如何完成 View 应用到 Jetpack Compose 的迁移:sunflower 完整拆解

发布时间:2026/10/31 1:47:23
如何完成 View 应用到 Jetpack Compose 的迁移:sunflower 完整拆解 如何完成 View 应用到 Jetpack Compose 的迁移sunflower 完整拆解【免费下载链接】sunflowerA gardening app illustrating Android development best practices with migrating a View-based app to Jetpack Compose.项目地址: https://gitcode.com/gh_mirrors/su/sunflower手头的 View 应用由 XML 和 Fragment 堆成想换 Compose 又怕推倒重来。sunflower 是一个园艺应用把 View 应用到 Jetpack Compose 的迁移拆成了可复现的路线照着走一遍就能套到自己的项目上。项目定位View 应用改写成 Compose 的完整路线sunflower 的定位写在 README 里一个园艺 App演示如何把 Material 2 的 View 应用迁到 Material 3 的 Compose。它的价值不在园艺功能而在迁移路径本身——Gallery、Garden、Home、PlantList、PlantDetail 五个页面逐个重写最后把 Fragment 导航整体换成 Navigation ComposeFragment 全部移除。注意它的改动范围数据层的 Room、Repository、WorkManager 基本不动只动 UI 层。对想迁移自家项目的团队来说这就是刀口大小的参考不用连数据库一起重做。 理解核心把界面当「报菜名」传统 View 像亲自下厨XML 先把每道菜的盘子摆好代码里 findViewById 再端菜上桌数据一变得手动找到对应控件去改。Compose 更像报菜名你只描述客人看到什么——列表数据是这几行界面就该长这样框架负责把画面重新画出来。每个屏幕就是一个 Kotlin 函数输入状态输出界面状态一变函数重跑一次。这个差别直接决定迁移顺序先搬单个页面再换导航而不是先推翻整套 XML 体系。 五步跑通迁移示例第 1 步拉代码先跑起来一条命令git clone https://gitcode.com/gh_mirrors/su/sunflower用 Android Studio 打开直接 Run。验证App 能进首页并显示植物列表数据来自本地 assets/plants.json不需要联网。第 2 步补一个 Unsplash key画廊页的图来自 Unsplash APIkey 要写进 gradle.properties放项目根目录或用户目录 ~/.gradle/gradle.properties 都行unsplash_access_keyyour Unsplash access key这一行就是全部配置。验证点进详情页再进画廊能加载出图片不配 key 时 App 也能运行只是进不了画廊别把这一点误判成迁移失败。第 3 步按迁移路线读文档先读 迁移路线文档整个迁移分三段定策略、逐屏迁移、换导航并删除 Fragment。验证你能对着文档说出五个页面的迁移顺序以及每段对应的完成状态。第 4 步挑一个页面看实现打开 Compose 界面源码garden、plantlist、plantdetail、gallery、home 五个子目录对应五个已迁移的屏幕。验证挑 plantlist 看列表界面全是 Composable 函数res/layout 下只剩 item_plant_description.xml 一个文件那是给后面要讲的 AndroidViewBinding 用的。第 5 步看导航怎么切换路由定义集中在 路由文件每个页面一段data object PlantDetail : Screen( route plantDetail/{plantId}, navArguments listOf(navArgument(plantId) { type NavType.StringType }) ) { fun createRoute(plantId: String) plantDetail/${plantId} }原来的 nav_graph XML 换成了这种字符串路由参数也声明在代码里。验证运行后从首页点进详情页、再进画廊plantId 和 plantName 两个参数都能正确带过去返回键行为不变。⚠️ 新旧写法对照顺便避开三个坑环节View 旧写法Compose 新写法布局XML 文件 findViewByIdComposable 函数数据刷新手动 setText 或监听回调状态变化触发重组页面跳转Fragment Navigation XML 图NavHost 路由字符串视觉风格Material 2Material 3三个容易踩的坑key 没配就怀疑代码坏了。症状是画廊进不去实际只差 gradle.properties 里那一行见第 2 步。HTML 文案变乱码。Compose 的 Text 渲染不了 HTML 标签植物介绍里的加粗会原样显示。项目在 植物详情页源码 里用 AndroidViewBinding 嵌了一个 TextView 解决这个 Composable 就叫 PlantDescription。页面没迁完先换导航。旧页面还依赖 Fragment 导航图时提前删 Fragment 会直接崩。迁移路线文档也把换导航放在最后一步五个页面全部迁完才动它。 三条进阶建议对比改动幅度checkout 仓库的 views 分支那是迁移前的 View 版本可逐文件 diff。每个新 Composable 顺手补 UI 测试androidTest 目录里 createComposeRule 的写法可以直接抄。冷启动别凭感觉用 macrobenchmark 模块现成的任务生成 Baseline Profile再看数据。想继续深入从仓库里的 docs/MigrationJourney.md 读起README 也说明了后续 Compose 写法以官方 compose-samples 示例集为准。【免费下载链接】sunflowerA gardening app illustrating Android development best practices with migrating a View-based app to Jetpack Compose.项目地址: https://gitcode.com/gh_mirrors/su/sunflower创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询