我刚刚做了一个实验,一个大的ImageView
在全屏大小,一个小的ImageView
在中间。我更改了小ImageView
的src,只调用小ImageView
的onDraw
。
我想知道如果大ImageView
的onDraw
没有被调用,为什么我可以在屏幕上看到它?
我猜GPU渲染是基于GPU缓冲区的最后一个快照,只提交每个VSYNC
的更改。因此,如果这个区域没有变化,它会将内容显示为最后一帧。
我错了吗?请把你的想法告诉我。
只有更改的视图需要重新绘制。为什么其他的需要呢?
当你在imageView中更改图像时,它会在该视图上调用invalidate()。这将视图标记为脏视图,需要重新绘制。这将导致它的onDraw在下一个渲染通道被调用。不是无效的视图不会改变,因此不需要调用它们的onDraw。