SurfaceHolder.Callbackとは何ですか?使用方法


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の対応するメソッドが呼び出されます。必要に応じて、各メソッド内で描画や処理を行うことができます。