当只有一个小视图改变时,Android会重新绘制整个屏幕吗?



我刚刚做了一个实验,一个大的ImageView在全屏大小,一个小的ImageView在中间。我更改了小ImageView的src,只调用小ImageViewonDraw

我想知道如果大ImageViewonDraw没有被调用,为什么我可以在屏幕上看到它?

我猜GPU渲染是基于GPU缓冲区的最后一个快照,只提交每个VSYNC的更改。因此,如果这个区域没有变化,它会将内容显示为最后一帧。

我错了吗?请把你的想法告诉我。

只有更改的视图需要重新绘制。为什么其他的需要呢?

当你在imageView中更改图像时,它会在该视图上调用invalidate()。这将视图标记为脏视图,需要重新绘制。这将导致它的onDraw在下一个渲染通道被调用。不是无效的视图不会改变,因此不需要调用它们的onDraw。

相关内容

  • 没有找到相关文章

最新更新