当应用页面布局的嵌套程度过深时,应用渲染阶段会存在一些组件的绘制指令被其他组件的绘制指令部分或完全覆盖遮挡的情况,造成冗余的cpu、gpu等计算资源的使用。这种一个屏幕上的像素点被重复绘制了多次的情况被称为过度绘制(Overdraw)。开发者可通过系统提供的过度绘制调试指令,查看引起过度绘制的组件位置及其层级,从而减轻应用渲染时的负载。
本文将分别介绍过度绘制调试功能的使用方式,以及如何进行过度绘制的分析和优化。
使用方式
系统提供的过度绘制调试功能,可通过shell进行开启或者关闭。
-
使用前提:需在系统设置中开启开发者模式。
-
开启过度绘制调试功能:
param set debug.graphic.overdraw true
-
关闭过度绘制调试功能:
param set debug.graphic.overdraw false
-
查看是否开启了过度绘制调试功能:
true表示开启了过度绘制功能,false则表示未开启。
param get debug.graphic.overdraw
过度绘制组件分析
开启了过度绘制调试功能后,打开应用界面,存在过度绘制情况的像素会被代表着不同级别的颜色方框高亮出来,其颜色越深代表过度绘制情况越严重,对应关系如下:
- 原色:无过度绘制情况
- 蓝紫色:存在一次过度绘制
- 绿色:存在两次过度绘制
- 浅红色:存在三次过度绘制
- 深红色:存在四次或更多次过度绘制
以下是一个存在冗余的背景颜色嵌套问题的示例应用程序,及其对应的开启过度绘制调试功能的界面显示情况。
@Entry
@Component
struct Index {
@State message: string = 'Hello World'
build() {
Row() {
Column() {
Column() {
Column() {
Column() {
Column() {
Text("Hello World")
}
.width('80%')
.height('80%')
.backgroundColor(Color.White)
}
.width('80%')
.height('80%')
.backgroundColor(Color.White)
}
.width('80%')
.height('80%')
.backgroundColor(Color.White)
}
.width('80%')
.height('80%')
.backgroundColor(Color.White)
}
.width('80%')
}
.height('80%')
}
}
编译安装后打开过度绘制调试功能,应用界面如上图所示。
可以发现,从Hello World文字组件开始,由内到外的这几个Column组件在界面上分别显示为深红色-浅红色-绿色-蓝紫色-原色。这种现象说明,随着嵌套程度的加深,每一个Column组件的背景颜色绘制都会带来一次过度绘制。
另外,状态栏、侧边栏等系统界面也会在过度绘制调试功能中被统计到,此为正常现象。
如何减少过度绘制现象
通过上文所述的调试功能可以帮助我们发现应用界面里存在的过度绘制问题,通常我们建议采用如下方式减少过度绘制的现象:
- 通过显隐控制或者if-else条件,减少页面上冗余的组件。
- 减少被完全遮挡的组件上的绘制指令,如背景颜色、组件内容等。
- 采用扁平化布局,减少组件嵌套深度,比如将大小相近、功能类似的布局组件合并为一个组件等。
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿