마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

surfaceview 화면 클리어하는 방법좀 알려주세요.

0 추천

현재 MediaCodec을 사용하여 surfaceview에 영상을 그리는 중인데요.

 

class aaa extends thread {

  Surface surface;

  boolean bStart;

  aaa (SurfaceHoder Holder) {
     bStart = false;
     surface = Holder.getSurface();
  }

  public void run() {
     while(true) {
         if ( bStart == true ) {
              //그리기
         }
         else {
              //여기서 화면클리어하고싶어요
         }
      }
  }
}

 

이런구조에서 화면클리어를 어떤 식으로 해야할지 알려주시면 감사하겠습니다.

 

canvas c = holder.lockCanvas();

c.drawARGB(0, 0, 0, 0);

holder.unlockCanvasAndPost(c);
 
 
이렇게 했을땐 화면은 시커멓게 만들순 있지만 다시 그리는게 안되더라구요..
emerald (760 포인트) 님이 2015년 1월 13일 질문
emerald님이 2015년 1월 13일 수정

1개의 답변

0 추천

Canvas c = holder.lockCanvas(null);

Bitmap bgImage = Bitmap.createBitmap(너비, 높이, Bitmap.Config.ARGB_8888);
c.setBitmap(bgImage);
 
c.drawColor(Color.WHITE);
 
holder.unlockCanvasAndPost(c);
 
-------------
캔버스에는 비트맵이 연결되어야 일단 뭔가를 그릴수 있으니 비트맵을 연결시켜야 합니다. (제가 여기서 비트맵은 매번 생성하게 했는데, 그냥 예시일 뿐입니다. 원래는 비트맵 생성은 바깥쪽에서 한번 합니다. 그래서 비트맵이 계속 유지가 되고, 그 비트맵에 뭔가를 계속 그리실 수 있고, 그리다가 중간에 클리어도 할 수 있습니다.)
 
drawColor를 이용하면 됩니다. drawARGB를 사용해도 무방한데 위에 값은 0, 0, 0, 0을 넣으셨는데, 그러면 알파값을 0으로 주셨으니 당연히 화면을 클리어(클리어 한다라는 의미가 흰색으로 채우는거라면) 한다라기 보다는 투명한 rgb 0,0,0을 채우게 됩니다. drawARGB(255, 255, 255, 255)로 해야 흰색으로 채우게 됩니다. 아니면 drawColor(Color.WHITE)를 사용하세요
익명사용자 님이 2015년 1월 13일 답변
...