1

http://android-developers.blogspot.ca/2013/09/using-hardware-scaler-for-performance.htmlに従って、setFixedSize を使用して、非常に大きな画面サイズのタブレットでゲームを高速化しようとしています。

私が直面している問題は、現在、Surface を追加する RelativeLayout があることです。

テスト ケースとして、gl2jni NDK サンプル アプリを使用し、init メソッドで getHolder().setFixedSize(128,128) への呼び出しを GJ2JNIView.java に追加しました。これにより、128x128 の醜いバッファが適切に作成され、フルスクリーンに拡大され、期待どおりに動作しました。

次に、JL2JNIActivity の onCreate メソッドを次のように変更しました。

@Override protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    mView = new GL2JNIView(getApplication());

    boolean useRelativeLayout = false;
    if ( useRelativeLayout ) {
      mLayout = new RelativeLayout(this);
      RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
      mLayout.setLayoutParams(param);
      mLayout.addView(mView);

      setContentView(mLayout);
    } else {
      setContentView(mView);
    }
}

useRelativeLayout を false に設定し、setContentView が setFixed サイズを呼び出した GL2JNIView を直接使用すると、期待どおりに動作します。

useRelativeLayout を true に設定すると、mView が左上に小さな 128x128 バッファーとして表示されます。

4

1 に答える 1

1

そのため、調べたところ、mViewでlayoutParamsを設定していませんでした。

mView のレイアウト パラメータを次のように設定することで、mView を適切にスケーリングしました

RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lp.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);

mView.setLayoutParams(lp);
于 2014-09-23T20:28:21.467 に答える