相关问题
WebView进程模型和渲染机制是什么
3119浏览 • 1回复 待解决
使用ArkUI和ArkTS如何运行深度学习模型
3274浏览 • 1回复 待解决
ArkUI渲染性能深度优化
610浏览 • 0回复 待解决
组件状态修改与build渲染机制
2463浏览 • 1回复 待解决
RS节点数与ArkUI控件节点树两者之间区别是什么?
1077浏览 • 1回复 待解决
HarmonyOS arkui如何实现条件属性渲染
817浏览 • 1回复 待解决
Stage模型和FA模型的区别
4204浏览 • 1回复 待解决
FA模型和Stage模型StartAbility使用差异
2810浏览 • 1回复 待解决
HarmonyOS ArkUI node有没有capi接口获取当前节点是否visible吗
891浏览 • 1回复 待解决
FA模型和Stage模型StartAbility的使用差异
1453浏览 • 1回复 待解决
ArkUI的渲染性能优化有哪些常见手段?
515浏览 • 0回复 待解决
HarmonyOS ArkUI组件支持Webview的同层渲染
1013浏览 • 1回复 待解决
HarmonyOS ArkUI中如何循环渲染固定个数内容
756浏览 • 1回复 待解决
#鸿蒙学习大百科#FA模型的主进程和渲染进程有什么区别?
1177浏览 • 1回复 待解决
如何利用 ArkUI 框架优化鸿蒙应用的渲染性能?
686浏览 • 1回复 待解决
#鸿蒙通关秘籍#鸿蒙进程模型和线程模型如何协作?
1191浏览 • 1回复 待解决
ArkTS的组件化开发机制如何实现高效的UI渲染?
597浏览 • 0回复 待解决
ArkUI的List组件如何优化万级数据渲染?
525浏览 • 0回复 待解决
动态化渲染节点诉求,需要确认XNode方案交付时间,需要提供相应API以及SDK
2931浏览 • 1回复 待解决
HarmonyOS AudioVivid音频解码和渲染
1080浏览 • 1回复 待解决
HarmonyOS中stage模型和FA模型如何理解,区别是什么
2010浏览 • 1回复 待解决
HarmonyOS ArkUI_NativeNodeAPI_1#measureNode方法是否支持在节点未上树的情况下调用
578浏览 • 1回复 待解决
HarmonyOS的Stage模型和FA模型混用导致的问题如何解决?
582浏览 • 0回复 待解决
节点模型
当前模型是三棵树模型,分别为Component、Element和Render树,其中Component是作为前端UI组件的映射,一个UI组件对应一个Component,从Component生成对应的Element,来维护组件的树形结构和更新,Render被保存在Component和Element中,主要存储节点的属性信息,驱动绘制和更新。
渲染机制
布局
布局的过程就是通过各类布局的算法计算出每个RenderNode在相对空间上的真实大小和位置。
当某个节点的内容发生变化时,就会标记自己为needLayout,并一直向上标记到重绘边界(RepaintBoundary),从重绘边界开始,父节点将LayoutParam传给子节点,子节点据此计算尺寸大小和位置。
render_node.h
render_node.cpp
render_button.cpp
绘制
同布局一样,绘制也是一个深度遍历的过程,遍历调用每个RenderNode的Paint方法,此时的绘制只是根据布局算出来的大小和位置,在当前绘制的上下文记录每个节点的绘制命令。
对每个节点,绘制分为四个步骤:
① 如果当前节点需要分层,那么需要创建一个新的绘制上下文,并提供可以记录绘制命令的画布;
② 在当前的画布上记录背景的绘制命令;
③ 递归调用子节点的绘制方法,记录子节点的绘制命令;
④ 在当前的画布上记录前景的绘制命令。
render_node.cpp
rosen_render_context.cpp