Normalize battery bar corner radius for screen zoom
This commit is contained in:
+18
-1
@@ -14,6 +14,7 @@ import android.graphics.PixelFormat;
|
|||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.graphics.RectF;
|
import android.graphics.RectF;
|
||||||
import android.os.BatteryManager;
|
import android.os.BatteryManager;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.RoundedCorner;
|
import android.view.RoundedCorner;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -1242,7 +1243,23 @@ final class BatteryBarController {
|
|||||||
|
|
||||||
private int roundedCornerRadius(WindowInsets insets, int position) {
|
private int roundedCornerRadius(WindowInsets insets, int position) {
|
||||||
RoundedCorner corner = insets.getRoundedCorner(position);
|
RoundedCorner corner = insets.getRoundedCorner(position);
|
||||||
return corner != null ? Math.max(0, corner.getRadius()) : 0;
|
if (corner == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return stableDensityRadius(Math.max(0, corner.getRadius()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private int stableDensityRadius(int radius) {
|
||||||
|
if (radius <= 0 || getResources() == null) {
|
||||||
|
return radius;
|
||||||
|
}
|
||||||
|
DisplayMetrics metrics = getResources().getDisplayMetrics();
|
||||||
|
int currentDpi = metrics != null ? metrics.densityDpi : 0;
|
||||||
|
int stableDpi = DisplayMetrics.DENSITY_DEVICE_STABLE;
|
||||||
|
if (currentDpi <= 0 || stableDpi <= 0 || currentDpi == stableDpi) {
|
||||||
|
return radius;
|
||||||
|
}
|
||||||
|
return Math.max(1, Math.round(radius * (stableDpi / (float) currentDpi)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildSharpTopPath(int width, float topY, float bottomY, float halfStroke) {
|
private void buildSharpTopPath(int width, float topY, float bottomY, float halfStroke) {
|
||||||
|
|||||||
Reference in New Issue
Block a user