一、屏幕高度和宽度获取方法
- int screenWidth,screenHeight;
- WindowManager windowManager = getWindowManager();
- Display display = windowManager.getDefaultDisplay();
- screenWidth = display.getWidth();
- screenHeight = display.getHeight();
另外一种
- DisplayMetrics dm = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- int screenWidth = dm.widthPixels;
- int screenHeight = dm.heightPixels;
二、状态栏高度获取方法
- Rect frame = new Rect();
- getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
- int statusBarHeight = frame.top;
上面这种方法基本上是可以的,但是下面这种方法更牛逼
- private int getStatusBarHeight() {
- 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 getResources().getDimensionPixelSize(x);
- } catch (Exception e1) {
- Log.d(TAG, "get status bar height fail");
- e1.printStackTrace();
- return 75;
- }
- }
三、获取标题栏的高度
- int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
- //statusBarHeight是上面状态栏的高度
- int titleBarHeight = contentTop - statusBarHeight;
四、获取ActionBar高度
- int actionBarHeight = getActionBar().getHeight();
注意 :如果是在Activity的onCreate函数中就开始使用,需要将其放入Runnable中调用,因为这个时候控件的高度可能还没有确定。
- View root;
- 。。。。
- root.post(new Runnable() {
- @Override
- public void run() {
- //To change body of implemented methods use File | Settings | File Templates.
- getActivityContentHeight();