Android 中获取手机屏幕的宽度和高度(单位为像素)

Posted 路宇~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 中获取手机屏幕的宽度和高度(单位为像素)相关的知识,希望对你有一定的参考价值。

方法一:

		//方法一:应用程序显示区域指定可能包含应用程序窗口的显示部分,不包括系统装饰
 		Display display = getWindowManager().getDefaultDisplay();
        Point point = new Point();
        display.getSize(point);
        int width = display.getWidth();
        int height = display.getHeight();
        Log.e(TAG, "width: "+width+",height:"+height );

方法二:

		//方法二:应用程序显示区域指定可能包含应用程序窗口的显示部分,不包括系统装饰
		Display display = getWindowManager().getDefaultDisplay();
        Point point = new Point();
        display.getSize(point);
        int width = point.x;
        int height = point.y;
        Log.e(TAG, "width: "+width+",height:"+height ); //720,1491

方法三:

		//方法三:应用程序显示区域指定可能包含应用程序窗口的显示部分,不包括系统装饰
		DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
	    int width = displayMetrics.widthPixels;
        int height = displayMetrics.heightPixels;
        Log.e(TAG, "width: "+width+",height:"+height ); //720,1491

方法四:

 		//方法四:获取的是实际显示区域指定包含系统装饰的内容的显示部分
		DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getRealMetrics(dm);
        int width = dm.widthPixels;
        int height = dm.heightPixels;
        Log.e(TAG, "width: " + width + ",height:" + height); //720,1560

getDefaultDisplay方法在API13时就已经被废弃,我们可以优先选择使用方法三中的方法,避免使用了getDefaultDisplay()方法。

如果我们运行在android 系统11.0 对于API level 30的话我们可以使用以下方法,前提是运行的真机系统为Android 11.0系统才不会崩溃,且Android版本大于等于API level 30,否则还是用以上的方法。

方法五:

		//方法五
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
//            获取的是实际显示区域指定包含系统装饰的内容的显示部分
            int width = getWindowManager().getCurrentWindowMetrics().getBounds().width();
            int height = getWindowManager().getCurrentWindowMetrics().getBounds().height();
            Log.e(TAG, "width: " + width + ",height:" + height); //720,1491
            Insets insets = getWindowManager().getCurrentWindowMetrics().getWindowInsets()
                    .getInsetsIgnoringVisibility(WindowInsets.Type.systemBars());
            Log.e(TAG, "去掉任何系统栏的宽度:" + (width - insets.right - insets.left) + ",去掉任何系统栏的高度:" + (height - insets.bottom - insets.top));
        } else {
            //获取减去系统栏的屏幕的高度和宽度
            DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
            int width = displayMetrics.widthPixels;
            int height = displayMetrics.heightPixels;
            Log.e(TAG, "width: " + width + ",height:" + height); //720,1491
        }

具体注释已经给出,需要的可以直接拿去使用~

以上是关于Android 中获取手机屏幕的宽度和高度(单位为像素)的主要内容,如果未能解决你的问题,请参考以下文章

android获取手机屏幕的宽度及高度

如何获取屏幕的宽度

android 开发中 怎么用js获取手机屏幕高度

android 获取屏幕高度和宽度 的方法

android怎么获取fragment屏幕宽度

如何将获取的屏幕宽度之后传给css