Arch 组件中新增的 Jetpack compose 组件就像是 Flutter Ui 的制作。
它是如何制作 Ui 的?
它是使用像Skia这样的原生代码引擎,还是像以前一样沿用ViewGroup的方式?
最佳答案
Compose 创建一个当前名为 AndroidComposeView
的 View ,它继承了 ViewGroup,并在其 Canvas 上绘制小部件树。它还处理此 View 的运动/键盘事件。
由于实现细节,可能会有更多辅助 View 添加到此 View 中,但基本上对于 Compose 的“小部件”,您不会在 View 层次结构中看到经典 View 。布局检查器目前对 Compose 没有帮助 - 您可以尝试一下,但您将看不到您的小部件。
开发人员 promise 能够创建自己的自定义小部件,这些小部件可以直接在 Canvas 上绘画,为自身或子级设置布局,或处理输入事件。
但是,Canvas
和此处使用的许多其他类不是标准框架类。例如,在 Kotlin 中重新定义了 Canvas for Compose。类似的还有新的 Paint
、Shape
和其他新类。他们在内部为他们的工作使用框架类,但那是实现细节。绘图时,您会使用这些新类。
由于 Compose 是一个库,并不原生存在于 Android 设备上,因此该库包含在每个使用 Compose 的应用中。 此外,此处不涉及 native 代码,所有内容均在 Kotlin 中完成,并成为应用程序的 dexed 代码的一部分。通过使用 Compose,您的应用将不会包含任何额外的原生库(如果创作者不改变主意的话,可能是这样)。
关于android - Jetpack Compose 是如何在引擎盖下工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58558163/