我在应用程序中使用 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;
这没有任何作用。我认为它在三星银河中的工作方式与其他设备不同,因为那个独特的酒吧。有谁知道我能做些什么来获得这个高度?谢谢你的帮助!