SurfaceHolder.Callbackを使用することで、SurfaceViewのライフサイクルイベント(作成、変更、破棄など)を検知し、必要な処理を実行することができます。以下に、SurfaceHolder.Callbackの使用方法とコード例を示します。
まず、SurfaceHolder.Callbackを実装するクラスを作成します。例えば、以下のようなクラスを作成することができます。
public class MySurfaceCallback implements SurfaceHolder.Callback {
@Override
public void surfaceCreated(SurfaceHolder holder) {
// Surfaceが作成された時の処理
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// Surfaceの変更があった時の処理
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// Surfaceが破棄された時の処理
}
}
次に、SurfaceViewを作成し、SurfaceHolder.Callbackを登録します。以下は、MainActivityの例です。
public class MainActivity extends AppCompatActivity {
private SurfaceView surfaceView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = findViewById(R.id.surface_view);
SurfaceHolder holder = surfaceView.getHolder();
holder.addCallback(new MySurfaceCallback());
}
}
上記の例では、MainActivityがSurfaceHolder.Callbackを実装したMySurfaceCallbackクラスのインスタンスを作成し、SurfaceHolderに登録しています。
これにより、SurfaceViewのライフサイクルイベントが発生すると、MySurfaceCallbackの対応するメソッドが呼び出されます。必要に応じて、各メソッド内で描画や処理を行うことができます。