Android 获取屏幕高和宽(不包含/包含虚拟按键),状态栏的高度

7人阅读 评论(0) 收藏 举报
分类:

在网上找的获取屏幕宽度高度的方法多有不准确的,这里以自己手机作为测试,总结一些准确的方法,故有此文。
下文的高指手机从上到下的长度,宽指从左到右的长度。
1.Android 获取屏幕高和宽(不包含虚拟按键)
一般需要知道的,就是这种不包含虚拟按键的高度,因为任何控件布局 都不可能悬浮在显示出来的虚拟按键之上。这种方法获得的高和宽,在有无虚拟按键时是不一样的,它所得的值是不包含虚拟按键部分的高和宽。

WindowManager manager = this.getWindowManager();
        DisplayMetrics outMetrics = new DisplayMetrics();
        manager.getDefaultDisplay().getMetrics(outMetrics);
        int width = outMetrics.widthPixels;
        int height = outMetrics.heightPixels;

2.Android 获取屏幕高和宽(包含虚拟按键,即手机屏幕真实的高和宽)
如下获取的值,在有无虚拟按键时都是一致的。因为虚拟按键在Android 4.4开始才会有,所以下面有一个判断

  WindowManager windowManager =
                (WindowManager) getApplication().getSystemService(Context.
                WINDOW_SERVICE);
        final Display display = windowManager.getDefaultDisplay();
        Point outPoint = new Point();
        if (Build.VERSION.SDK_INT >= 19) {
            // 可能有虚拟按键的情况
            display.getRealSize(outPoint);
        } else {
            // 不可能有虚拟按键
            display.getSize(outPoint);
        }
        int mRealSizeWidth;//手机屏幕真实宽度
        int mRealSizeHeight;//手机屏幕真实高度
        mRealSizeHeight = outPoint.y;
        mRealSizeWidth = outPoint.x;

3.获取状态栏高度
可以在任意地方调用获取状态栏高度,是目前我知道的唯一一种可以在onCreate()方法中调用,并直接获得准确状态栏高度的方法。注意,当隐藏状态栏时,这个方法同样会返回状态栏显示出来时的值,不会显示0。

public static int getStatusBarHeight() { 
int result = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", 
        "dimen", "android");
        if (resourceId > 0) {
            result = getResources().getDimensionPixelSize(resourceId);
        }
        return result;
}
查看评论

Android--获得屏幕高宽,屏幕截图(包括或不包括状态栏)

记录下这些常用的方法,方便以后开发使用,贴代码://获得屏幕相关的辅助类 public class ScreenUtils { private ScreenUtils() { ...
  • zengxyuyu
  • zengxyuyu
  • 2017-06-13 23:06:14
  • 723

获取屏幕真实高度包含NavigationBar(底部虚拟按键)

public int getScreentHeight() {       int heightPixels;       WindowManager w = this.getWindowManage...
  • chunho
  • chunho
  • 2015-11-18 09:53:18
  • 1383

Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键

Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键
  • u010785585
  • u010785585
  • 2016-11-01 09:56:02
  • 5956

获取Android手机屏幕宽高(虚拟按键)

获取屏幕的宽高,通常方法如下几种: // 获取屏幕密度(一) Display display = getActivity().getWindowManager().getDefaultDisp...
  • xulike1990
  • xulike1990
  • 2017-02-10 15:40:24
  • 2073

获取屏幕大小、获取底部虚拟按键高度

/** * 获取底部虚拟键盘的高度 */ public int getBottomKeyboardHeight(){ int screenHeight = ge...
  • Mr_Leixiansheng
  • Mr_Leixiansheng
  • 2017-10-20 11:32:09
  • 381

Android获取屏幕宽高及状态栏高度的方法

获取屏幕宽度和高度 方法一:WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); int...
  • baidu_34045013
  • baidu_34045013
  • 2016-05-06 22:56:40
  • 629

android 平板获取真实宽高(包括状态栏)

出于目前android平板方面的书籍非常少很多有关android平板与android手机开发之间的区别的文章更是凤毛麟资,本文是对andriod平板新手而写,高手勿喷。 关于android手机屏幕与...
  • lgj452555712
  • lgj452555712
  • 2013-11-30 15:47:42
  • 2095

获取虚拟按键、状态栏等高度;

//获取屏幕原始尺寸高度,包括虚拟功能键高度 public static int getDpi(Context context){ int dpi = 0; WindowManager...
  • xidianluke
  • xidianluke
  • 2015-10-22 12:37:53
  • 13082

Android--获取屏幕高宽度工具类

//获得屏幕相关的辅助类 public class ScreenUtils { private ScreenUtils() { /* cannot be instant...
  • li5685918
  • li5685918
  • 2016-02-26 15:24:16
  • 5558

Android开发之如何获取屏幕、状态栏、导航栏和虚拟功能键的高度

Android开发之如何获取屏幕、状态栏、导航栏和虚拟功能键的高度 先说说这些概念到底指的哪里吧。这里以我说的为准,至于对不对,管他呢,你知道是指的哪里就可以了。如下图,由于获取屏幕高度不会包含下面...
  • qq_29311721
  • qq_29311721
  • 2018-01-06 17:14:06
  • 376
    个人资料
    持之以恒
    等级:
    访问量: 3万+
    积分: 838
    排名: 5万+
    最新评论