From 67bb207b7e5d7ceb7b660e50acdf71d1bb2efc97 Mon Sep 17 00:00:00 2001 From: Yichi Chen Date: Wed, 8 Jun 2022 03:36:29 +0000 Subject: [PATCH] Query the display status from DisplayInfo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit During the resolution changes, the display status in DisplayMetrics is obsolete during the resolution changes. To get the accurate display status, we query the status from DisplayInfo, instead of DisplayMetrics. Bug: 233698163 Test: Switch resolution with customized density Change-Id: I360aeecab0feaa5d21cc7a5679ff50e735ed8043 --- .../android/settingslib/display/DisplayDensityUtils.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java index 8b34cf3d624ff..44a37f4ccacae 100644 --- a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java @@ -25,6 +25,7 @@ import android.util.DisplayMetrics; import android.util.Log; import android.util.MathUtils; import android.view.Display; +import android.view.DisplayInfo; import android.view.IWindowManager; import android.view.WindowManagerGlobal; @@ -87,14 +88,14 @@ public class DisplayDensityUtils { } final Resources res = context.getResources(); - final DisplayMetrics metrics = new DisplayMetrics(); - context.getDisplayNoVerify().getRealMetrics(metrics); + DisplayInfo info = new DisplayInfo(); + context.getDisplayNoVerify().getDisplayInfo(info); - final int currentDensity = metrics.densityDpi; + final int currentDensity = info.logicalDensityDpi; int currentDensityIndex = -1; // Compute number of "larger" and "smaller" scales for this display. - final int minDimensionPx = Math.min(metrics.widthPixels, metrics.heightPixels); + final int minDimensionPx = Math.min(info.logicalWidth, info.logicalHeight); final int maxDensity = DisplayMetrics.DENSITY_MEDIUM * minDimensionPx / MIN_DIMENSION_DP; final float maxScaleDimen = context.getResources().getFraction( R.fraction.display_density_max_scale, 1, 1);