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

时间:2012-11-30 23:53:48

标签: android dimensions

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

2 个答案:

答案 0 :(得分:11)

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

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

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

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

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

示例显示高度:

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

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

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

答案 1 :(得分:6)

这也很简单:

Rect windowRect = new Rect();

yourView.getWindowVisibleDisplayFrame(windowRect);

int hWindow = windowRect.height();
int wWindow = windowRect.width();