gpt4 book ai didi

android - 如何使用 invalidate() 方法重绘 SurfaceView?

转载 作者:行者123 更新时间:2023-11-29 21:50:00 25 4
gpt4 key购买 nike

我有一个 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);
}
}

}

pawnBoardbigPawnsmallPawn 在这个类中是公共(public)的,它们就像:

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 的图像:

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);


}

我一直在寻找解决方案,但我发现的这些都没有帮助。

最佳答案

覆盖 surfaceCreated()。然后添加这一行:

setWillNotDraw(false);

关于android - 如何使用 invalidate() 方法重绘 SurfaceView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com