Normalize battery bar corner radius for screen zoom

This commit is contained in:
ajp_anton
2026-06-22 02:00:05 +00:00
parent dd215cde82
commit 9c7707830c
@@ -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) {