私はいくつかの地域を持っています。私がそれらのそれぞれに触れるとき、彼らは彼らの絵を変える必要があります(正確にいくつかの長方形で)ので、以下の私のコード
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()); Rect(0、0-800、404)を返します。しかし、rePaintがRect(300、0 --400、100)を返す前に、このrectはチェックされました/どのように彼のサイズを変更できますか?
PS:セカンドタッチなどは問題なく動作します。O_o
PSS:答えを見つけました。SurfaceHolder.lockCanvas(Rectdirty) ダブルバッファリングを使用したLiveWallpaperが問題を引き起こしました