我是
Android开发的新手,只是阅读文档并尝试了
蜜蜂.我放弃了混淆ImageView如何设法绘制的一部分
无效(Rect)调用后的内容.
蜜蜂.我放弃了混淆ImageView如何设法绘制的一部分
无效(Rect)调用后的内容.
我检查了ImageView.java,发现没有其他绘图方法除外
onDraw(Canvas),但是onDraw(Canvas)只在它是的时候才会剪切drawable
beyound视图的可见边界.
我也读过View.invalidate(Rect)的实现,我觉得
这个函数的关键是调用
mParent.invalidateChild(this,r);
但是,我认为父视图不知道如何绘制子项
给定的Rect,它最终必须调用它的一些方法
画出来.
有人调查过这部分代码吗?你能不能给我
一些指导?
解决方法
据我所知,有两个优化.例如,如果子项是一个视图组,则只重绘与该无效区域相交的该组的子项.此外,画布被剪裁到此rect的边界.这意味着必须将较少的像素通过总线混洗到帧缓冲区,并且可以跳过完全剪切的绘制操作.
这是一个半教育的猜测.几个月前我浏览了源码,并且相当肯定ViewGroup的事情.可以通过覆盖onDraw中的裁剪并检查它是否重绘所有内容来测试第二个.