我有几个地区。当我触摸他们每个人时,他们需要更改他们的图片(确切地说是一些矩形)所以,我的代码如下
private void rePaint(Rect rect, int i, int j) {
Canvas canvas = null;
try {
canvas = holder.lockCanvas(rect);
String imageName = cards[i - 1][j - 1].getName();
int id = getResources().getIdentifier(imageName, "drawable", getContext().getPackageName());
Bitmap image = BitmapFactory.decodeResource(getResources(), id);
// Log.d("OLOLO", Integer.toString(id));
// Log.d("OLOLO", imageName + j + i);
Log.d("OLOLO", rect.toString());
canvas.drawBitmap(image, null, rect, null);
} finally {
if (canvas != null) {
holder.unlockCanvasAndPost(canvas);
}
}
}
但。第一次触摸时,图片全屏显示。和 Log.d("OLOLO", rect.toString()); 返回矩形 (0, 0 - 800, 404)。但是这个矩形在 rePaint 返回 Rect(300, 0 - 400, 100)/ 之前检查过它如何改变他的大小?
PS:第二次触摸和其他工作正常。o_o
PSS:我找到了答案。带有 SurfaceHolder.lockCanvas(Rect dirty) 双缓冲的 LiveWallpaper 导致了我的问题