WindowMetrics


public final class WindowMetrics
extends Object

java.lang.Object
   ↳ android.view.WindowMetrics


Metrics about a Window, consisting of the bounds and WindowInsets.

This is usually obtained from WindowManager.getCurrentWindowMetrics() and WindowManager.getMaximumWindowMetrics().

After Build.VERSION_CODES.UPSIDE_DOWN_CAKE, it also provides density.

Obtains Window Dimensions in Density-independent Pixel(DP)

While getDensity() is provided, the dimension in density-independent pixel could also be calculated with WindowMetrics properties, which is similar to Configuration.screenWidthDp

 float widthInDp = windowMetrics.getBounds().width() / windowMetrics.getDensity();
 float heightInDp = windowMetrics.getBounds().height() / windowMetrics.getDensity();
 
Also, the density in DPI can be obtained by:
 float densityDp = DisplayMetrics.DENSITY_DEFAULT * windowMetrics.getDensity();
 

Summary

Public constructors

WindowMetrics(Rect bounds, WindowInsets windowInsets)

This constructor is deprecated. use WindowMetrics(android.graphics.Rect, android.view.WindowInsets, float) instead.

WindowMetrics(Rect bounds, WindowInsets windowInsets, float density)

The constructor to create a WindowMetrics instance.

Public methods

Rect getBounds()

Returns the bounds of the area associated with this window or UiContext.

float getDensity()

Returns the density of the area associated with this window or UiContext, which uses the same units as DisplayMetrics.density.

WindowInsets getWindowInsets()

Returns the WindowInsets of the area associated with this window or UiContext.

String toString()

Returns a string representation of the object.

Inherited methods

Public constructors

WindowMetrics

Added in API level 30
public WindowMetrics (Rect bounds, 
                WindowInsets windowInsets)

This constructor is deprecated.
use WindowMetrics(android.graphics.Rect, android.view.WindowInsets, float) instead.

Parameters
bounds Rect: This value cannot be null.

windowInsets WindowInsets: This value cannot be null.

WindowMetrics

Added in API level 34
public WindowMetrics (Rect bounds, 
                WindowInsets windowInsets, 
                float density)

The constructor to create a WindowMetrics instance.

Note that in most cases WindowMetrics is obtained from WindowManager.getCurrentWindowMetrics() or WindowManager.getMaximumWindowMetrics().

Parameters
bounds Rect: The window bounds This value cannot be null.

windowInsets WindowInsets: The WindowInsets of the window This value cannot be null.

density float: The window density

Public methods

getBounds

Added in API level 30
public Rect getBounds ()

Returns the bounds of the area associated with this window or UiContext.

Note that the size of the reported bounds can have different size than Display.getSize(Point) based on your target API level and calling context. This method reports the window size including all system bar areas, while Display.getSize(Point) can report the area excluding navigation bars and display cutout areas depending on the calling context and target SDK level. Please refer to Display.getSize(Point) for details.

The following code snippet shows how to get the bounds excluding navigation bars and display cutout:

 final WindowMetrics metrics = windowManager.getCurrentWindowMetrics();
 // Gets all excluding insets
 final WindowInsets windowInsets = metrics.getWindowInsets();
 Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars()
         | WindowInsets.Type.displayCutout());

 int insetsWidth = insets.right + insets.left;
 int insetsHeight = insets.top + insets.bottom;

 // Legacy size that Display#getSize reports
 final Rect bounds = metrics.getBounds();
 final Size legacySize = new Size(bounds.width() - insetsWidth,
         bounds.height() - insetsHeight);
 

Returns
Rect window bounds in pixels. This value cannot be null.

getDensity

Added in API level 34
public float getDensity ()

Returns the density of the area associated with this window or UiContext, which uses the same units as DisplayMetrics.density.

Returns
float

getWindowInsets

Added in API level 30
public WindowInsets getWindowInsets ()

Returns the WindowInsets of the area associated with this window or UiContext.

Returns
WindowInsets the WindowInsets of the visual area. This value cannot be null.

toString

Added in API level 30
public String toString ()

Returns a string representation of the object.

Returns
String a string representation of the object.