0

私はいくつかの地域を持っています。私がそれらのそれぞれに触れるとき、彼らは彼らの絵を変える必要があります(正確にいくつかの長方形で)ので、以下の私のコード

    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が問題を引き起こしました

4

0 に答える 0