Get screen width and height in Android

前端 未结 30 3652
野的像风
野的像风 2020-11-22 09:28

How can I get the screen width and height and use this value in:

@Override protected void onMeasure(int widthSpecId, int heightSpecId) {
    Log.e(TAG, \"onM         


        
30条回答
  •  不思量自难忘°
    2020-11-22 10:16

    Full way to do it, that returns the true resolution:

                WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
                Point size = new Point();
                wm.getDefaultDisplay().getRealSize(size);
                final int width = size.x, height = size.y;
    

    And since this can change on different orientation, here's a solution (in Kotlin), to get it right no matter the orientation:

    /**
     * returns the natural orientation of the device: Configuration.ORIENTATION_LANDSCAPE or Configuration.ORIENTATION_PORTRAIT .

    * The result should be consistent no matter the orientation of the device */ @JvmStatic fun getScreenNaturalOrientation(context: Context): Int { //based on : http://stackoverflow.com/a/9888357/878126 val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager val config = context.resources.configuration val rotation = windowManager.defaultDisplay.rotation return if ((rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_180) && config.orientation == Configuration.ORIENTATION_LANDSCAPE || (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270) && config.orientation == Configuration.ORIENTATION_PORTRAIT) Configuration.ORIENTATION_LANDSCAPE else Configuration.ORIENTATION_PORTRAIT } /** * returns the natural screen size (in pixels). The result should be consistent no matter the orientation of the device */ @JvmStatic fun getScreenNaturalSize(context: Context): Point { val screenNaturalOrientation = getScreenNaturalOrientation(context) val wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager val point = Point() wm.defaultDisplay.getRealSize(point) val currentOrientation = context.resources.configuration.orientation if (currentOrientation == screenNaturalOrientation) return point else return Point(point.y, point.x) }

提交回复
热议问题