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
,并对其进行封装,对外提供了各种我们在上层所使用的各种组件或者容器。
所以当我们在 Compose
中 setContent
后,其初始化了一个 ComposeView
,并且添加了一个 AndroidComposeView
,其承载了我们代码中所写的全部组件,并进行解析,最终绘制在了传统UI中。
所以为什么说Compose不在意布局层级呢?
因为人家只有两层啊,即业务代码中,
ComposeView
下就只有一个AndroidComposeView
,而其他Image
,Box
等组件都是人家自己绘制的。你说相比 传统View 还会存在层级问题吗