Android 是否可能使屏幕工作区投入使用?

Android 是否可能使屏幕工作区投入使用?,android,android-layout,android-screen,Android,Android Layout,Android Screen,在服务中(即不在活动中)是否可以获得屏幕的工作区域,即屏幕高度减去顶部的状态栏高度和底部的软键空间(“返回”、“主页”等) private DisplayMetrics displayMetrics = new DisplayMetrics(); WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); windowManager.getDefaultDispla

在服务中(即不在活动中)是否可以获得屏幕的工作区域,即屏幕高度减去顶部的状态栏高度和底部的软键空间(“返回”、“主页”等)

private DisplayMetrics displayMetrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(displayMetrics);

int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;

我已经尝试过这个服务,它对我很有效。在2.3设备(Galaxy Y和Nexus One上试用)上,它提供了完整的屏幕尺寸。但在4.x设备(Nexus4上试用过)上,它给出的屏幕大小减去状态栏。如果您找到了一种更可靠的方法,请发布。

以及Srikant的答案,下面是获取显示尺寸的另一种方法:

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;

这给出了与Srikant答案相同的高度和宽度。

我相信
DisplayMetrics
返回的高度不包括软键区域,但不包括状态栏。例如,Nexus4的宽度和高度为720x1280。
DisplayMetrics
返回高度和宽度为720 x 1184。这个96像素的高度差异(大约是屏幕总高度的1/12)太大,无法作为通知栏,但正好可以作为软键区域。其他手机,如HTC Desire HD和Galaxy S2,其“返回”、“主页”等按钮位于屏幕区域之外,因此,
DisplayMetrics
返回的高度是屏幕的实际高度。以下是获取状态栏高度的可靠方法: