方法一:
//方法一:应用程序显示区域指定可能包含应用程序窗口的显示部分,不包括系统装饰 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 }
具体注释已经给出,需要的可以直接拿去使用~