0

我在应用程序中使用 Andengine GLES2。我也在使用带有静态附件的动作条 sherlock,所以我有这样的引擎选项:

    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);

引擎需要在没有全屏的情况下运行才能显示操作栏。这与我的惠普触摸板平板电脑完美配合,整个游戏填满了操作栏下方的空间。使用三星 Galaxy S3 时,顶部状态栏没有考虑在内,宽度看起来太小,因为高度大于应有的高度。我需要一种方法来以某种方式获得三星银河中顶部状态栏的高度。我已经尝试过在 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。在此找到您的渲染表面视图的宽度和高度并设置您的相机宽度和高度。

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 回答