0
Surfaceview를 사용하여 배경 이미지를 변경하고 있습니다. 하지만 holder.getSurface(). isValid()에 대해 false가 나옵니다. 왜 그런지 모르겠습니다. 비슷한 질문을 여기에서 보았지만 여전히 해결할 수 없었습니다. 뭔가 내가 당신은 표면 가용성에 대한 이벤트를 수신하기 위해 SurfaceView
에 Callback
를 추가했다holder.getSurface(). isValid()가 false를 반환합니다.
감사
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);
}
}
}