diff --git a/app/src/main/java/se/ajpanton/statusbartweak/runtime/features/battery/BatteryBarController.java b/app/src/main/java/se/ajpanton/statusbartweak/runtime/features/battery/BatteryBarController.java index f179551..dff09f2 100644 --- a/app/src/main/java/se/ajpanton/statusbartweak/runtime/features/battery/BatteryBarController.java +++ b/app/src/main/java/se/ajpanton/statusbartweak/runtime/features/battery/BatteryBarController.java @@ -14,6 +14,7 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.graphics.RectF; import android.os.BatteryManager; +import android.util.DisplayMetrics; import android.view.Gravity; import android.view.RoundedCorner; import android.view.View; @@ -1242,7 +1243,23 @@ final class BatteryBarController { private int roundedCornerRadius(WindowInsets insets, int 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) {