0

アプリで Andengine GLES2 を使用しています。また、アクション バーのシャーロックを静的アタッチメントで使用しているため、次のようなエンジン オプションがあります。

    DisplayMetrics metrics = this.getResources().getDisplayMetrics();

    // Calculate ActionBar height
    TypedValue tv = new TypedValue();
    if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true))
    {
        mActionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics());
    }

    CAMERA_WIDTH = metrics.widthPixels;
    CAMERA_HEIGHT = metrics.heightPixels-mActionBarHeight;
    camera = new ZoomCamera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
    EngineOptions options = new EngineOptions(false,
            ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(
                    CAMERA_WIDTH, CAMERA_HEIGHT), camera);

アクション バーが表示されるようにするには、エンジンを全画面表示せずに実行する必要があります。これは私の HP タッチパッド タブレットで完璧に動作し、ゲーム全体がアクション バーの下のスペースを埋めます。Samsung Galaxy S3 を使用している場合、上部のステータス バーが考慮されず、高さが本来よりも大きいため、幅が小さすぎます。どうにかしてサムスン Galaxy のトップ ステータス バーの高さを取得する方法が必要です。SOの複数のスレッドで見たこの方法を試しました:

Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
int contentViewTop= 
    window.findViewById(Window.ID_ANDROID_CONTENT).getTop();
int TitleBarHeight= contentViewTop - StatusBarHeight;

これは何もしません。そのユニークなバーのために、サムスンギャラクシーでは他のデバイスとは異なる動作をしていると思います. これの高さを得るために私ができることを誰かが知っていますか? 助けてくれてありがとう!

4

1 に答える 1

1

LayoutGameActivityを使用できます。これで、rendersurfaceviewの幅と高さを見つけ、カメラの幅と高さを設定します。

public class YourGameActivity extends LayoutGameActivity{
     @Override
public Engine onLoadEngine() {
     // here find your LinearLayout width and height.
    return null;
}

@Override
public void onLoadResources() {
}

@Override
public Scene onLoadScene() {
    return null;
}

@Override
public void onLoadComplete() {
}

@Override
protected int getLayoutID() {
    return 0;
}

@Override
protected int getRenderSurfaceViewID() {
    return 0;
}
}
于 2013-03-11T05:38:04.203 に答える