IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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 和即将退场的 Fragment

1?文章信息

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 模式:

  • Model
  • View
  • ViewModel

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 目录中我们可以找到:

  • common 目录保存了可重用组件,比如自定义的 MyButton 控件。
  • navigation 目录保存导航、屏幕跳转等相关内容。

这看起来真不错。可重用函数可以在 Activity 中导入并使用,就像其他 kotlin 文件一样。可重用组件也是如此。

5?结论

上面就是这篇短文的结论。希望对你有所帮助。如果你觉得还有可以改进的地方,请在评论中分享你的思考 :)

这里是示例程序GitHub地址

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:09:58  更:2021-08-30 12:11:50 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码