1、 屏幕区域的获取
- activity.getWindowManager().getDefaultDisplay();
- Rect outRect = new Rect();
- activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(outRect);
3、view绘制区域获取
- Rect outRect = new Rect();
- activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getDrawingRect(outRect);
注意: 如果刚启动Activity时就要计算这些数据,最好在 onWindowFocusChanged 函数中进行, 否则得到的某些数据可能是错误的,比如,应用区域高宽的获取。
下面是另一种获取状态栏高度的方法
/**
* 获取状态栏高度
*
* @param v
* @return
*/
public static int getStatusBarHeight(Context context) {
Activity activity = (Activity) context;
Class<?> c = null;
Object obj = null;
Field field = null;
int x = 0;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
return activity.getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
return 75;
}
}