나는 서피스 홀더에서 반환 된 캔버스에 그리려고합니다. lockCanvas()
하지만 렌더링 된 캔버스는 단순히 흰색입니다.아무 것도 SurfaceHolder에서 Canvas에 표시하지 않습니다. lockCanvas() [Android]
내 MySurface extends SurfaceView
및 implements SurfaceHolder
생성자 :
MySurface(Context context){
super(context);
surfaceHolder = getHolder();
surfaceHolder.addCallback(this);
displayThread = new MyDisplayThread(surfaceHolder);
}
내 surfaceCreated()
재정
public void surfaceCreated(SurfaceHolder sH){
displayThread.start();
}
내 surfaceDestroyed()
재정
public void surfaceDestroyed(SurfaceHolder sH){
boolean reset = true;
while(reset){
try{
displayThread.join();
reset = false;
}catch (InterruptedException e){}
}
}
내가 그림에 사용하는 스레드 : 클래스 변수는 다음과 같습니다
SurfaceHolder surfaceHolder,
Paint paint,
boolean isRunning,
Canvas canvas = null
class MyDisplayThread extends Thread {
MyDisplayThread(SurfaceHolder sH){
surfaceHolder = sH;
isRunning = true;
paint = new Paint();
}
@Override
public void run(){
while(isRunning){
canvas = surfaceHolder.lockCanvas();
try{
myDraw();
}finally {
if(canvas != null) surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
public void myDraw(){
paint.setARGB(255,152,54,12);
canvas.drawText("RSFDS",100,100,paint);
canvas.drawRect(120,150,300,300,paint);
paint.setARGB(255,255,255,255);
}
}
시도해 주셔서 감사합니다. – dev