Arch 组件中新增的 Jetpack compose 组件类似于 Flutter Ui 制作。
它是如何制作 Ui 的?
它是使用像 Skia 这样的原生代码引擎,还是仍然像以前一样遵循 ViewGroup 的方式?
Arch 组件中新增的 Jetpack compose 组件类似于 Flutter Ui 制作。
它是如何制作 Ui 的?
它是使用像 Skia 这样的原生代码引擎,还是仍然像以前一样遵循 ViewGroup 的方式?
Compose 创建一个当前名为 的视图AndroidComposeView
,它继承 ViewGroup,并在其画布上绘制小部件树。它还处理此视图的运动/键盘事件。
由于实现细节,该视图中可能添加了更多辅助视图,但基本上对于 Compose 的“小部件”,您不会在视图层次结构中看到经典视图。布局检查器目前对 Compose 没有帮助 - 您可以尝试它,但您不会看到您的小部件。
开发人员承诺能够创建自己的自定义小部件,可以直接在 Canvas 上绘制,为自己或子设置布局,或处理输入事件。
但是,Canvas
这里使用的许多其他类不是标准的框架类。例如,在 Kotlin 中重新定义了 Canvas for Compose。类似的方式还有 new Paint
、Shape
和其他新类。他们在内部使用框架类进行工作,但这是实现细节。绘图时,您将使用这些新类。
由于 Compose 是一个库,并且不存在于 Android 设备上,因此该库包含在每个使用 Compose 的应用程序中。此外,这里不涉及本机代码,一切都在 Kotlin 中完成,并成为您应用程序的 dexed 代码的一部分。通过使用 Compose,您的应用将不包含任何额外的原生库(如果创建者不改变主意,可能会这样)。