一个手机屏幕从上之下分别是:状态栏、标题栏和内容区域,有时候写代码时需要考虑获取屏幕的尺寸,具体的获取各区域的尺寸如下:
//获取手机屏幕区域高度
public int getWindowArea() {
Display display = getWindowManager().getDefaultDisplay();
Point point = new Point();
display.getSize(point);
int width = point.x;
int height = point.y;
return height;
}
//获取应用区域高度
public int getApplicationArea() {
Rect rect = new Rect();
getWindow().getDecorView().
getWindowVisibleDisplayFrame(rect);
int width = rect.width();
int height = rect.height();
return height;
}
//获取view绘制区域高度
public int getDrawArea() {
Rect rect = new Rect();
getWindow().findViewById(Window.ID_ANDROID_CONTENT)
.getDrawingRect(rect);
int width = rect.width();
int height = rect.height();
return height;
}
!!!获取这些尺寸必须要在重写onWindowFocusChanged()方法之后,例子:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
System.out.println("onWindowFocusChanged");
if (hasFocus) {
//获取view绘制区域(即不包括标titlebar的内容区域)距离手机屏幕顶部的距离
int offset = getWindowArea() - getDrawArea();
}
}