非顶级View硬件加速与非硬件加速绘制

5 阅读1分钟

View.draw(Canvas, ViewGroup, long)中会判断绘制类型是否为软件类型,或者当前View是否不支持硬件加速绘制,若这两个条件有一个满足就会依次执行buildDrawingCache()getDrawingCache()draw(Canvas),把所有绘制缓存数据保存到一个bitmap中,然后由Canvas.drawBitmap()负责把数据进行传递渲染;若两个条件都不满足,则会依次执行updateDisplayListIfDirty()draw(Canvas)将得到的DisplayList数据保存到View的绘制节点RenderNode中,然后交给DisplayListCanvas.drawRenderNode()处理渲染操作。

参照:

juejin.cn/post/684490…

juejin.cn/post/701634…