| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Jetpack Compose 和即将退场的 Fragment -> 正文阅读 |
|
[移动开发]Jetpack Compose 和即将退场的 Fragment |
Jetpack Compose 和即将退场的 Fragment1?文章信息
2?介绍本文是关于如何组织 Jetpack Compose 项目结构的。我不会讲怎样创建可组合函数,这方面已经有太多的文章了。 Jetpack Compose 是一个新的 UI 工具箱,它基于函数式和声明性原则,助你为 Android(或其他平台)构建新颖优雅的界面。 3?谁杀死了 Fragment?在现今的 Android 世界中(当前 Jetpack Compose 仍然是 beta 状态),我们通常会采用下面的架构: Listing 1:?现今 Android 应用的常见架构 Application - ActivityA - Fragment1 + ViewModel1 - Fragment2 + ViewModel2 - ActivityB - Fragment3 + ViewModel3 如果我们从架构中删除 Fragment,有什么可以替代它呢?我们要如何处理 ViewModel 呢? 我们回忆一下 MVVM 模式:
Fragment 在其中只是 View(因而须避免在 Fragment 中添加业务逻辑)。使用 Jetpack Compose 你可以使用可组合函数替代 Fragment 作为 View 使用。我们用一个示例应用来说明。这是一个简单的、包含 2 个屏幕的应用,你可以在屏幕 1 和屏幕 2 之间相互跳转。每个屏幕拥有自己的 View 和 ViewModel。在 Activity 中我们将对 View 和 ViewModel 进行实例化。 Listing 2:?示例应用 Application - ActivityA - ComposableScreen1View(ViewModel1) - ComposableScreen2View(ViewModel2) 如同使用 Fragment,我们需要以参数的方式,将 ViewModel 传递给可组合函数(使用 ktx 或 ViewModel provider)。你需要在 Activity 中实例化 ViewModel,然后传递给可组合函数。 Listing 3:?Activity.kt private val screen1ViewModel: Screen1ViewModel by viewModels() ComposableFunctionScreen1View(screen1ViewModel) 注:如果你使用?Koin,你可以在可组合函数中直接使用 getViewModel() 获得 ViewModel。 4?可组合函数应当放到哪里?这是一个好问题。你可以将一切东西临时的保存到 Activity 中。事实上大部分人正式这么做的。但是这种方法不适合大的项目。可组合函数可以保存到一个独立的文件中,这将大大优化项目结构。我的建议是,为每个特性或屏幕建立一个类似下面的 package: ? ?screen1 目录是应用的屏幕或特性,包含 View 和 ViewModel。重要的是这里没有任何 XML 文件,你所需要的都在 package 中。 在 ui 目录中我们可以找到:
这看起来真不错。可重用函数可以在 Activity 中导入并使用,就像其他 kotlin 文件一样。可重用组件也是如此。 5?结论上面就是这篇短文的结论。希望对你有所帮助。如果你觉得还有可以改进的地方,请在评论中分享你的思考 :) 这里是示例程序GitHub地址。 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/31 5:44:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |