0

RelativeLayout で背景として使用されるこのような画像があります。

ここに画像の説明を入力

この画像は、ゲームのすべてのレベルの背景として使用されます。すべてのレベルが青い領域に描画されます。青い領域の縦横比を固定したままにして、赤い縁のサイズを変更して、画面の未使用のピクセルがユーザーに表示されないようにしたいと考えています。緑色の領域は、すべてのスマートフォンで 80 dp に固定する必要があります。次に、青色の領域に完全に収まるようにレイアウトにビュー (GLSurfaceView) を追加する必要があります。したがって、私の Android ゲームのすべてのレベルは、すべての Android デバイスで完全に同じになります。

どうすればこの問題を解決できますか?

私が使用する実際の画像はもう少し複雑です。ここで見ることができます:

実像

4

1 に答える 1

0

画面の中央部分 (青) に 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 のサイズを把握するには...

  1. 表示寸法の取得
  2. 緑のバーの寸法を減算
  3. Blue View のサイズを計算し、高さ/幅 (大きい方) を取得して、不足している寸法を計算します。
  4. 赤のビューを空きスペースを占有するように設定します。

したがって、これをプログラムで行う必要があります:)

于 2013-10-20T20:12:28.657 に答える