2014年1月19日日曜日

Android SurfaceView 背景透過描画

Android SurfaceView 背景透過描画

Androidで画面の描画を行うときViewを用いて図形や画像などの描画ができます。タッチをした時だけだったり一定時間毎に画面の更新がない場合はViewで大丈夫ですが、ゲームなどで一定時間ごとに画面の更新がある場合はSurfaceViewを用います。

そこで一番困ったことがSurfaceViewを用いて描画を行うとその描画が残ってしまいます。
ゲームなどの描画ではループの始まりに背景を書き直すことで対処できますが、カメラからのビューを背景に用いて描画を重ねて表示する場合リセットするために全体を白色などで塗りつぶしてしまっては意味がありません。

そこで透過をしながら画面をリセットするためには

Canvas.drawColor(int color, Mode mode)を使います。

引数にcolor Color.TRANSPARENT,mode PorterDuff.Mode.CLEAR指定することによって透過をしながら画面をリセットできます。


/*----------------------------------------------------------------------------
@Override
 public void run() {

  while(true){
   try {
    Canvas canvas = surfaceholder.lockCanvas();

    canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);

    /*
        描画処理・・・
    */
  
    surfaceholder.unlockCanvasAndPost(canvas);
  
    Thread.sleep(50);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 }

---------------------------------------------------------------------------------*/

0 件のコメント:

コメントを投稿