基本的な使い方

Android用語集

カテゴリー: SurfaceViewクラス  閲覧数:342 配信日:2018-09-02 12:04


SurfaceViewを継承したサブクラスを作成


サブクラス内で独自の描画処理を書いていく
※必ず「extends SurfaceView」する必要があるわけではない
public class サブクラス名 extends SurfaceView

SurfaceHolder.Callbackをimplementする


SurfaceViewは自身のSurfaceの状態変化についても監視する必要がある(途中でサイズが変わったら、それに応じて描画内容も調整したりなど)
・そのため、SurfaceHolderからのコールバックを受け取るためのSurfaceHolder.Callbackをimplementする
public class サブクラス名 extends SurfaceView implements SurfaceHolder.Callback
※必ず「extends SurfaceView」する必要があるわけではない
public class MainActivity extends AppCompatActivity implements SensorEventListener, SurfaceHolder.Callback


SurfaceViewのコンストラクタ


「SurfaceViewを継承したサブクラスのコンストラクタ」の中などで、ホルダーのコールバックに自身をセットしておけば、Surfaceの準備ができたタイミング(実際に描画できるようになったタイミング)等でコールバックが呼ばれるようになる
getHolder()
public サブクラス名(Context context) {
   super(context);
   getHolder().addCallback(this);
}
public class MainActivity extends AppCompatActivity
       implements SensorEventListener, SurfaceHolder.Callback {

   //中略

   @Override
   protected void onCreate(Bundle savedInstanceState) {

       //中略

       SurfaceView surfaceView =  (SurfaceView) findViewById(R.id.surfaceView);
       mHolder = surfaceView.getHolder();
       mHolder.addCallback(this);

使用例


画面上に表示したボールへ、センサーの値をリアルタイムに反映させる
JAVA 加速度センサーで玉ころがしアプリ
Kotlin 加速度センサーで玉ころがしアプリ

SurfaceView使用する場合は、必ずしも extends SurfaceView しなくてもよい?

SurfaceHolderからはCanvasを取得できるAndroidのSurfaceViewの基礎



SurfaceHolder  |  Android Developers