标签归档:updateDisplayListIfDirty

Android 硬件和软件绘制的一些差异分析

1.从简单的现象出发

当布局关系如下图所示时,其中Child1和Child2有重叠

Applictaion关闭硬件绘制

使用软件绘制时,调用invalidate时候可以发现兄弟 Child2也进行了绘制,ParentLayout1的兄弟节点ParentLayout2 虽然执行了dispatchDraw,但是子控件并没有重绘

Applictation打开硬件绘制时

使用硬件绘制时,调用invalidate可以发现仅仅是Child1进行绘制但是Child2没有进行绘制

从上面的现象可以发现,硬件绘制时,即使view有重叠,在刷新ui的时候也可以保持只绘制一个,而且不管是软件还是硬件,父亲的兄弟节点之后的view也不需要重绘,这表明一个问题,使用硬件绘制和软件绘制的时候,方法的调用流程似乎是不一样的。 查看更多