Ich verwende Surfaceview, um das Hintergrundbild zu ändern. Aber ich werde falsch auf holder.getSurface(). IsValid() und ich weiß nicht warum. Ich habe mir hier ähnliche Fragen angeschaut, konnte sie aber immer noch nicht lösen. Gibt es etwas fehlt, was ich bisher getan haben, oder gibt es etwas, das ichholder.getSurface(). IsValid() gibt false zurück
Dank
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class BrickSmasherView extends SurfaceView {
SurfaceHolder holder;
Canvas canvas;
Context context;
Thread back = null;
volatile boolean running = false;
public BrickSmasherView(Context context) {
super(context);
this.context = context;
holder = getHolder();
}
public void runbackThread(){
back = new Thread(new Runnable() {
@Override
public void run() {
while (running){
draw();
}
}
});
back.start();
}
public void resumegame(){
running = true;
runbackThread();
}
public void pausegame(){
running = false;
try
{
back.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void draw(){
if(holder.getSurface().isValid()){
canvas = holder.lockCanvas();
canvas.drawBitmap(BitmapFactory.decodeResource(getResources(),R.drawable.sky),0,0,null);
holder.unlockCanvasAndPost(canvas);
}
}
}