1.获取Android屏幕尺寸

我们可以通过getSize()方法获得屏幕的尺寸

Display display = getWindowManager().getDefaultDisplay();Point size = new Point();display.getSize(size);int width = size.x;int height = size.y;

如果不是在Activity里面,则无法使用getWindowManager(),此时可以使用WINDOW_SERVICE获得一个默认的Display

WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);Display display = wm.getDefaultDisplay();

getSize()方法是在API 13 之后才加入的,在API 13之前我们需要这样做

Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth();  // 已经过时int height = display.getHeight();  // 已经过时

为了适配所有的设备,我们应该这样写

 if (android.os.Build.VERSION.SDK_INT >= 13) {            display = getWindowManager().getDefaultDisplay();            Point size = new Point();            display.getSize(size);            width = size.x;            height = size.y;        }else {            display = getWindowManager().getDefaultDisplay();            width = display.getWidth();            height = display.getHeight();        }

还有另外一种方法,这种方法也可以正确得到屏幕尺寸

  DisplayMetrics metrics = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(metrics);  width = metrics.widthPixels;  height = metrics.heightPixels;

更简便的写法

 width = getResources().getDisplayMetrics().heightPixels; height = getResources().getDisplayMetrics().widthPixels;

以上获得的屏幕高度都是包括了状态栏和导航栏的高度的
获取Android屏幕尺寸、控件尺寸、状态栏/通知栏高度、导航栏高度_第1张图片

2.获取控件尺寸

如果我们在onCreate()方法里直接调用getWidth()、getMeasuredWidth()获得的尺寸为0,这是由于在onCreate()中,我们的控件还没有画好,等onCreate()执行完了,我们的控件才被测量出来,我们可以注册一个监听器,用来监听测量结果

ViewTreeObserver vto  = mButton.getViewTreeObserver();        vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {            @Override            public void onGlobalLayout() {            //移除上一次监听,避免重复监听                mButton.getViewTreeObserver().removeGlobalOnLayoutListener(this);                //在这里调用getHeight()获得控件的高度                buttonHeight = mButton.getHeight();            }        });

3.获得状态栏/通知栏的高度

 public static int getStatusBarHeight(Context context){        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 = context.getResources().getDimensionPixelSize(x);        } catch (Exception e1) {            e1.printStackTrace();        }        return statusBarHeight;    }

4.获得导航栏高度

 public int getNavigationBarHeight(Activity activity) {        Resources resources = activity.getResources();        int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");        //获取NavigationBar的高度        int height = resources.getDimensionPixelSize(resourceId);        return height;    }

5.去除导航栏

在onCraete()方法中的setContentView();的之前调用下面这句代码

 requestWindowFeature(Window.FEATURE_NO_TITLE);

6.去除状态栏/通知栏

在onCraete()方法中的setContentView();的之前调用下面这句代码

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

更多相关文章

  1. java.lang.Exception: 密钥库文件不存在: ~/.android/debug.keys
  2. VideoView控件可以手动改变大小
  3. Android 自动化测试—robotium(五)Spinner控件
  4. Android TextView内容居中和控件居中
  5. Android向通讯录添加联系人的一般方法
  6. Android点赞动画效果 ,点赞后加一,2种方法,①补间动画②位移动画
  7. Android 闪屏页 全屏设置方法
  8. 使用Android提供的模拟任意地理位置,报java.lang.IllegalArgument
  9. android的sdk源码下载地址及关连方法

随机推荐

  1. 自定义ProgressDialog(无遮罩效果)
  2. 制作android开机logo
  3. 美团,大众点评,悬浮窗功能代码
  4. Android(安卓)工程编译 Unsupported majo
  5. android配置信息类-Configuration
  6. 一种动态水平ProgressBar的实现
  7. Android知识点及资料汇总(不断更新中)
  8. 解决eclipse ADT编译NDK报NDK和minSdkVer
  9. android下使用Fragment实现左侧3级菜单+
  10. android的系统存储与软件安装