我目前正在开发一个在画布上绘制一些图块的自定义视图。这些图块是从多个文件中加载的,并会在需要时加载。
它们将由 AsyncTask 加载。如果它们已经加载,它们只会被绘制在画布上。这工作正常!
如果加载了这些图片,则 AsyncTask 正在触发view.postInvalidate() 问题是我的自定义视图在每次触发 view.postInvalidate() 时都不会触发onDraw(Canvas canvas)。
view.postInvalidate仅在第一次加载图片时触发 onDraw() 方法,然后仅当我在 CustomView 内的 onTouchEvent 中触发 this.invalidate() 时
视图是否有可能决定它是否会再次绘制画布?有没有办法强制视图重绘?我认为 invalidate 方法告诉 View 如果 View 考虑重绘会很酷-.-
这些无效方法是否有可能有限制?
我希望你们中的任何人都对这个问题有更多的了解。
编辑:
我只是将每个 postInvalidate()更改为invalidate()因为图像都是由从主线程执行的 AsyncTask 加载的但是仍然存在执行的invalidate()没有执行onDraw()方法的问题。我发现view.invalidate()是通过覆盖原始方法触发的:
@Override
public void invalidate() {
super.invalidate();
Log.d(TAG, "invalidate executed");
}
我不知道现在该怎么办。我正在触发 view.invalidate() 和 view.postInvalidate() 但绝对没有任何组合。