我重写了ImageView,在onDraw方法中,我在它上面绘制了一条路径。 ImageView是一个以ListView显示的视图。
在第一次渲染时,图像始终存在,但有时路径不是。如果我向下滚动,那些图像总是有路径,当我向后滚动时,之前没有的第一个ImageView现在将始终显示它们的路径。我知道onDraw正在为第一个ImageViews调用,因为我在那里放了一个休息点。
我能想到的唯一一件事就是路径是在图像之前绘制的?尽管如此,它在我的代码中并没有这样做。实际上,我调用setImageBitmap来设置图像,而图像又调用invalidate,而后者又调度onDraw。我的onDraw首先调用超级。
禁用硬件加速也无效。
答案 0 :(得分:0)
我觉得有点傻,但我明白了。如果有人犯了同样的错误,这就是答案。
出于某种原因,我在onMeasure上设置了我将绘制的路径的尺寸。显然,这需要进入onLayout。所以基本上第一次绘制视图时,它的大小在测量时是0,所以我的路径是0,0坐标上的一堆点。后续渲染使用了ListView中的循环视图,它在测量时确实具有宽度和高度。