尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何完成 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),仅供参考
RELATED

相关推荐

Mac内存不够跑大模型?flint-oQ8e从oQ2e到oQ8e的8个量化变体终极对比清单

Mac内存不够跑大模型?flint-oQ8e从oQ2e到oQ8e的8个量化变体终极对比清单

本地部署大模型模型量化代码模型 【免费下载链接】flint-oQ8e 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/flint-oQ8e 点击查看 免费下载 flint-oQ8e 是把 40B 参数的 Recursive Flint MoE 大模型,用 oMLX 的 oQ8e 算法量化后跑在 Mac…

📅 2026/10/31 1:47:02
AI视频翻译全流程实战:PyVideoTrans 新手指南

AI视频翻译全流程实战:PyVideoTrans 新手指南

AI视频翻译全流程实战:PyVideoTrans 新手指南 【免费下载链接】pyvideotrans Translate the video from one language to another and embed dubbing & subtitles. 项目地址: https://gitcode.com/gh_mirrors/py/pyvideotrans 丢进去一个英文教程&#x…

📅 2026/10/31 1:42:02
Snapdrop 免费使用指南:浏览器里的局域网跨设备文件传输

Snapdrop 免费使用指南:浏览器里的局域网跨设备文件传输

Snapdrop 免费使用指南:浏览器里的局域网跨设备文件传输 【免费下载链接】snapdrop A Progressive Web App for local file sharing 项目地址: https://gitcode.com/gh_mirrors/sn/snapdrop 会议室刚拍的白板照片,想马上发到同事电脑上;手机里存着的 PDF,想用办公电脑打…

📅 2026/10/31 1:42:02
MORE NEWS

更多资讯

📰

WebAssembly逆向实战:荔枝网Wasm加密参数分析

1. 荔枝网Wasm加密参数逆向分析背景在当今Web安全领域,越来越多的网站开始采用WebAssembly(Wasm)技术来实现关键业务逻辑的加密保护。荔枝网作为国内知名的音频分享平台,其核心接口参数采用了Wasm加密方案,这给传统的JS逆向工作带来了新的挑战…

📰

输入受限双端队列的特性与应用解析

1. 特异双端队列的特性解析这个特殊的双端队列结构在传统双端队列基础上增加了操作限制,我们可以将其称为"输入受限双端队列"(Input-restricted deque)。它的核心特性体现在三个维度:插入灵活性:支持在头部(HEAD)和尾部(TAIL)两个端…

📰

AI开发者的新操作系统:Skills技术原理与实战指南

1. “skills”不是功能菜单,而是现代AI开发者的新型能力操作系统最近在几个前端技术群和AI工具交流频道里,反复看到有人发截图问:“为什么我装了Claude Code,点开Skills面板却全是灰色?”,“Codex里选了‘W…

📰

OpenRig:基于Node.js与tmux的本地AI工作流调度范式

1. OpenRig 是什么:一个被误读但极具潜力的本地 AI 工作流调度器OpenRig 这个名字在当前中文技术社区里,正经历一场典型的“标签漂移”——它既不是某个广为人知的开源项目官方名称,也不是某家大厂发布的标准化工具,而是在 Node.j…

📰

Claude Skills 本质是 MCP 协议下的可验证能力契约

1. “awesome-claude-skills”不是资源列表,而是一份正在演化的AI Agent能力工程实践地图你搜到的awesome-claude-skills,大概率点开的是 GitHub 上一个 star 数不断上涨的仓库——它名字里带“awesome”,但内核早已脱离传统“Awesome List”…

📰

自考论文写作利器:8款AI工具实测与组合使用指南

1. 自考论文写作的痛点与AI工具的价值作为一名自考过来人,我深知论文写作是让无数自考生头疼的"拦路虎"。时间碎片化、资料获取难、写作效率低是自考生的三大痛点。白天上班晚上学习的状态,让我们很难有大块时间泡图书馆;而学术资源…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬