浅析 JetPack Compose 是如何安装到View视图上

2022-02-09 14:41:27 浏览数 (1)

Hi , : )

看完本文可以帮你解开什么问题?

  • 为什么 Compose 无需在意 view 层级问题,怎样嵌套都行? (最简单10s就能明白);
  • Compose 如何安装到传统 View 视图上;

门外汉-从布局窥一眼

这是一段 Compose 的简单代码,我们演示了多层嵌套下的示例:

如果按照传统 View 的思维,我们不难发现,当前 content(R.id.content(FrameLayout)->) 布局中存在5层嵌套,这是极不可取的一种做法。

但是现在是 Compose ,最终的绘制真的会有5层吗?

我们打开 Filpper 看一下:

显然 R.id.content 下只有一个 ComposeView ,然后内部包含了一个 AndroidComposeView ,我们上述中的 Box 最终都被解析并安装到了这个自定义view上。

所以我们简单点可以总结为:

JetPack-Compose 其自定义了一个 基础容器- ComposeView ,以及其他扩展View,比如 AndroidComposeView ,并对其进行封装,对外提供了各种我们在上层所使用的各种组件或者容器。

所以当我们在 ComposesetContent 后,其初始化了一个 ComposeView ,并且添加了一个 AndroidComposeView ,其承载了我们代码中所写的全部组件,并进行解析,最终绘制在了传统UI中。

所以为什么说Compose不在意布局层级呢?

因为人家只有两层啊,即业务代码中,ComposeView 下就只有一个 AndroidComposeView ,而其他 Image,Box 等组件都是人家自己绘制的。你说相比 传统View 还会存在层级问题吗

0 人点赞