画面の中央部分 (青) に FrameLayout を使用し、表示する BackgroundImage を含む ImageView を追加し、その上に GLSurfaceView を配置します。
縦横比は常に同じなので、ImageViews sclaing を xy に合わせて設定すると、画像は常に同じに見えるはずです。
単純な SurfaceView を使用していると仮定しましょう。ImageView を配置するために使用される xml コード ID は次のようになります。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:layout_height="match_parent"
android:layout_width="match_parent"/>
<SurfaceView
android:layout_width="match_parent"
android:layout_height="match_parent" />
</FrameLayout>
ビューを構築する方法がわからないので、仕事をするコードを投稿することはできませんが、GLSurfaceView の代わりに FrameLayout をビューに追加するだけで、GLSurfaceView と同じ寸法になります。
その FrameLayout にまず ImageView を追加し、次に GLSurfaceView を追加します。高さと幅の両方が match_parent に設定されています。
SurfaceView のサイズを把握するには...
- 表示寸法の取得
- 緑のバーの寸法を減算
- Blue View のサイズを計算し、高さ/幅 (大きい方) を取得して、不足している寸法を計算します。
- 赤のビューを空きスペースを占有するように設定します。
したがって、これをプログラムで行う必要があります:)