android顶部状态栏 获取的两种方式

一般情况下我们通过调用下面方法即可获得状态栏的高度,同理也可以获得底部虚拟键盘的高度

/** * 获取状态栏高度 * * @return */public int getStatusBarHeight() {    //    Rect rect = new Rect();    getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);    int statusBarHeight = rect.top; // 状态栏高度    int bottomHeight = rect.bottom;// 底部虚拟键盘的    Log.i("statusBarHeight=", "statusBarHeight=" + statusBarHeight            + "---bottomHeight=" + bottomHeight);    return statusBarHeight;}

通过反射的形式获取状态栏高度,在oncreate中调用依然可以获得正确的高度

但是该方法如果在oncreate中调用获得状态栏高度为0,这是由于当前页面还未生成,所以上述方法使用情景只能在当页面已经加载完毕OnResume,类似 当按钮响应点击事件时获取状态栏高度;如果在oncreate调用就需要使用另外一种方式,通过反射的形式获取状态栏高度,在oncreate中调用依然可以获得正确的高度

/** * 获取状态栏高度 * * @return */public int getStatusBarHeight() {    Class<?> c = null;    Object obj = null;    Field field = null;    int x = 0, statusBarHeight = 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());        statusBarHeight = getResources().getDimensionPixelSize(x);    } catch (Exception e1) {        e1.printStackTrace();    }    return statusBarHeight;}

更多相关文章

  1. Android开发:Android快速开发不可或缺的11个工具类 (一)
  2. android基础
  3. Android(安卓)调用相册 拍照 实现系统控件缩放 切割图片
  4. Android中打电话的数据流程
  5. [Android]获取其他应用的logcat
  6. Android获取当前时间
  7. Android平台开发-Power management-电源管理
  8. Android访问网络
  9. Android的IPC机制Binder的详解汇总

随机推荐

  1. 浅谈android的selector,背景选择器
  2. Android编译系统
  3. Android实现系统下拉栏的消息提示——Not
  4. android 与 js 互调
  5. 更好用的Android(安卓)Toast
  6. android studio 添加Butterknife 插件
  7. android中listview的setAdapter()和getAd
  8. android:largeHeap属性
  9. android休眠
  10. Android面试总结--Android篇