android – 当调用invalidate(Rect)时,ImageView如何重绘其部分内容?

前端之家收集整理的这篇文章主要介绍了android – 当调用invalidate(Rect)时,ImageView如何重绘其部分内容?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 Android开发的新手,只是阅读文档并尝试了
蜜蜂.我放弃了混淆ImageView如何设法绘制的一部分
无效(Rect)调用后的内容.

我检查了ImageView.java,发现没有其他绘图方法除外
onDraw(Canvas),但是onDraw(Canvas)只在它是的时候才会剪切drawable
beyound视图的可见边界.
我也读过View.invalidate(Rect)的实现,我觉得
这个函数的关键是调用
mParent.invalidateChild(this,r);
但是,我认为父视图不知道如何绘制子项
给定的Rect,它最终必须调用它的一些方法
画出来.

有人调查过这部分代码吗?你能不能给我
一些指导?

解决方法

据我所知,有两个优化.例如,如果子项是一个视图组,则只重绘与该无效区域相交的该组的子项.此外,画布被剪裁到此rect的边界.这意味着必须将较少的像素通过总线混洗到帧缓冲区,并且可以跳过完全剪切的绘制操作.

这是一个半教育的猜测.几个月前我浏览了源码,并且相当肯定ViewGroup的事情.可以通过覆盖onDraw中的裁剪并检查它是否重绘所有内容来测试第二个.

猜你在找的Android相关文章