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()); 返回矩形 (0, 0 - 800, 404)。但是这个矩形在 rePaint 返回 Rect(300, 0 - 400, 100)/ 之前检查过它如何改变他的大小?

PS:第二次触摸和其他工作正常。o_o

PSS:我找到了答案。带有 SurfaceHolder.lockCanvas(Rect dirty) 双缓冲的 LiveWallpaper 导致了我的问题

4

0 回答 0