View mainRootView = mainDecorView.findViewById(android.R.id.content).getRootView();
if (Build.VERSION.SDK_INT > 19)
{
mainRootView.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
@Override
public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {
if (Build.VERSION.SDK_INT >= 28)
{
DisplayCutout cutout = insets.getDisplayCutout();
if (cutout != null)
{
android.view.Display display = getWindowManager().getDefaultDisplay();
android.graphics.Point displaySize = new android.graphics.Point();
display.getRealSize(displaySize);
// store safezone independent of resolution
float invX = 1.0f / (displaySize.x != 0.0f ? displaySize.x : 1.0f);
float invY = 1.0f / (displaySize.y != 0.0f ? displaySize.y : 1.0f);
safezoneF.left = (safezone.left = cutout.getSafeInsetLeft()) * invX;
safezoneF.top = (safezone.top = cutout.getSafeInsetTop()) * invY;
safezoneF.right = (safezone.right = cutout.getSafeInsetRight()) * invX;
safezoneF.bottom = (safezone.bottom = cutout.getSafeInsetBottom()) *invY;
nativeSetSafezoneInfo(displaySize.y > displaySize.x, safezoneF.left, safezoneF.top, safezoneF.right, safezoneF.bottom);
}
}
return insets;
}
});
}
Я бы хотел получить размер области выреза в процентах.
Если вы получаете экранное значение с помощью getRealSize, оно изменяется в зависимости от разрешения. Тем не менее, размер выреза всегда постоянен.
ex> Galaxy fold
1
screen size = 2152, 1536
Cutout left = 104
2
screen size = 1614, 1152
Cutout left = 104
Пожалуйста, помогите мне !!!