カテゴリー:
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);
}
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);
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