如何获取android应用程序窗口的大小而不是物理屏幕大小?

Chr*_*ght 10 android dimensions

在Android中,如何获得应用程序窗口的大小?我不是在寻找物理屏幕大小,而是在屏幕上查看应用程序窗口的实际大小.例如,一般在你拿走通知栏,软触按钮等后剩下的东西.

log*_*ray 12

如果你想要你的应用程序窗口的大小,你可以调用yourview.getHeight()和yourview.getWidth(); 但必须考虑到这一点才能发挥作用.

如果你想在绘制之前获得高度,你可以这样做:

/sf/answers/709398231/

虽然屏幕/视图测量有很多不同的情况,所以如果您可以更具体地了解"应用程序窗口的实际大小",这是您的应用程序吗?或主屏应用程序?,其他一些应用程序?

如果您想要可用空间减去装饰(状态栏/软按钮),您也可以反向攻击它,例如测量实际屏幕尺寸(方法因API而异),然后减去状态栏的高度.

示例显示高度:

((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();
Run Code Online (Sandbox Code Playgroud)

状态栏高度:

Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;
Run Code Online (Sandbox Code Playgroud)

要么

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density);
Run Code Online (Sandbox Code Playgroud)

许多不同的方法来做到这一点.

当然需要更多信息来提供更准确的答案.

  • 这对谷歌来说是疯狂的 - 除了平面设计师之外,除了图形设计师之外,所有人都应该对UI进行思考.我赞赏Google为应用程序提供了相当低级别的功能,但是他们忘记了如果开发人员不喜欢潜入随机窗口系统,那么制作常见/必要的东西(如UI"正常工作")几乎同样重要.另外值得注意的是,http://developer.android.com/reference/android/view/Display.html上的文档对于某些设备来说是完全错误的.我在华为Y320上运行4.2.2并且getRealMetrics()和getMetrics()返回完全相同的结果 (7认同)

Chr*_*gue 7

这也很简单:

Rect windowRect = new Rect();

yourView.getWindowVisibleDisplayFrame(windowRect);

int hWindow = windowRect.height();
int wWindow = windowRect.width();
Run Code Online (Sandbox Code Playgroud)