11

在 Android 中,如何获取应用程序窗口的大小?我不是在寻找物理屏幕尺寸,而是屏幕上应用程序窗口的实际尺寸。例如,通常在您拿走通知栏、软触摸按钮等之后剩下的内容。

4

2 回答 2

13

如果您想要应用程序窗口的大小,您可以调用 yourview.getHeight() 和 yourview.getWidth(); 但是必须绘制视图才能使其起作用。

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

https://stackoverflow.com/a/10134260/1851478

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

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

显示高度示例:

// Deprecated
((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getHeight();

状态栏高度:

Rect rectgle= new Rect();
Window window= getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectgle);
int StatusBarHeight= rectgle.top;

或者

int statusBarHeight = Math.ceil(25 * context.getResources().getDisplayMetrics().density);

许多不同的方法可以做到这一点。

当然需要您提供更多信息才能给出更准确的答案。

于 2012-12-01T00:04:35.080 回答
9

这也很容易:

Rect windowRect = new Rect();

yourView.getWindowVisibleDisplayFrame(windowRect);

int hWindow = windowRect.height();
int wWindow = windowRect.width();
于 2014-12-19T23:59:20.737 回答