1

GameBoardを拡張するクラスがありますSurfaceView。内部にはOnDrawメソッドがあります:

@Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int size  = getWidth()/8;
        canvasSize = size;
        pawnBitmap[0] = bigPawn;
        pawnBitmap[1] = smallPawn;
        float left_distance;
        float top_distance;
        for(int j = 0; j < 10; j++){
            for (int i =0; i < 4; i++){
                left_distance = i*size+(float)50;
                top_distance = j*size+(float)10;
                canvas.drawBitmap(pawnBitmap[0], left_distance, top_distance, paint);
                canvas.drawBitmap(pawnBitmap[1], 6*size+i*30+(float)10, top_distance+30, paint);
            }
        }

    }

pawnBoardbigPawnおよびsmallPawnこのクラスで公開されており、次のようなものです。

public BitmapFactory myBitmapFactory = new BitmapFactory();

public  Bitmap[] pawnBitmap = new Bitmap[2];
public Bitmap bigPawn =  Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.game_button_2), 90, 90, false);
public Bitmap smallPawn = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.game_button_2), 30, 30, false);

bigPawn と smallPawn のイメージを変更する 2 つ目の方法もあります。

public void setBitmaps(Bitmap one, Bitmap two){
        this.paint = new Paint();
        this.bigPawn = one;
        this.smallPawn = two;
        this.tmp=4;
        invalidate();

    }

しかし、別の内部 (別のクラス内) でこのメソッドを呼び出した後、画像は変更されません。tmpメソッドが実際に画像を変更するかどうか変数を使用して確認しましたsetBitmaps()が、これは正しいです。ただし、無効化機能は機能しません。なんで?メソッドを呼び出すsetBitmaps方法は次のとおりです。

public void savePermutation(View view){

        Bitmap tmpBitmap1 = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.blue), 230, 230, false);
        Bitmap tmpBitmap2 = Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.blue), 100, 100, false);
        myGameBoard.setBitmaps(tmpBitmap1, tmpBitmap2);


    }

私は解決策を探していましたが、私が見つけたものはどれも役に立ちませんでした。

4

1 に答える 1

2

オーバーライドしsurfaceCreated()ます。次に、次の行を追加します。

setWillNotDraw(false);
于 2013-02-03T21:00:21.430 に答える