繁体   English   中英

Jetpack compose 如何在引擎盖下工作

[英]How does jetpack compose work under the hood

新的 Jetpack compose 组件添加到 Arch 组件就像 Flutter Ui 制作一样。

它是如何制作 Ui 的?

它是使用像 Skia 这样的原生代码引擎,还是仍然像以前一样遵循 ViewGroup 的方式?

Compose 创建一个当前名为AndroidComposeView的视图,它继承 ViewGroup,并在其 canvas 上绘制小部件树。 它还处理此视图的运动/键盘事件。

由于实现细节,该视图中可能添加了更多辅助视图,但基本上对于 Compose 的“小部件”,您不会在视图层次结构中看到经典视图。 布局检查器目前对 Compose 没有帮助 - 您可以尝试它,但您不会看到您的小部件。

承诺开发者可以创建自己的自定义小部件,可以直接在 Canvas 上绘画,为自己或孩子设置布局,或处理输入事件。

但是,这里使用的Canvas和许多其他类不是标准框架类。 例如,用于 Compose 的 Canvas 在 Kotlin 中重新定义。 类似的还有新的PaintShape和其他新类。 他们在内部使用框架类进行工作,但这是实现细节。 绘图时,您将使用这些新类。

由于 Compose 是一个库,并且不存在于 Android 设备上,因此该库包含在每个使用 Compose 的应用程序中。 这里也没有涉及本机代码,所有内容都在 Kotlin 中完成,并成为您应用程序的 dexed 代码的一部分。 通过使用 Compose,您的应用将不包含任何额外的原生库(如果创建者不改变主意,可能会这样)。

不,它没有使用旧 UI Toolkit 中的任何东西,实际上他们正在构建它来克服旧 UIToolkit 的问题。

Compose is not views, It's a new set of Jetpack UI Widget, Basically, it's a Kotlin compiler plugin which renders the Android Canvas (I suppose there's no documentation for this yet) with full compatibility of existing android's view system, the last Dev summit there是一个讨论它如何在内部工作的演讲,I/O 也有另一个演讲

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM