Fix fullscreen on Android 12

This commit is contained in:
tehcneko committed 2022-01-23 20:54:33 +08:00
1 parent 8cf60e1fb2
commit 865aff4fde
5 files changed
+49 -102

No files matched your search

@@ -20,19 +20,20 @@ import android.content.Context;
import android.graphics.Rect;
import android.os.Build;
import android.util.AttributeSet;
import android.view.DisplayCutout;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.core.view.DisplayCutoutCompat;
import com.hippo.ehviewer.R;
import com.hippo.yorozuya.ObjectUtils;
public class GalleryHeader extends ViewGroup {
private DisplayCutout displayCutout;
private DisplayCutoutCompat displayCutout;
private int topInsets = 0;
private View battery;
private View progress;
@@ -51,14 +52,20 @@ public class GalleryHeader extends ViewGroup {
super(context, attrs);
}
@RequiresApi(api = Build.VERSION_CODES.P)
public void setDisplayCutout(@Nullable DisplayCutout displayCutout) {
public void setDisplayCutout(@Nullable DisplayCutoutCompat displayCutout) {
if (!ObjectUtils.equal(this.displayCutout, displayCutout)) {
this.displayCutout = displayCutout;
requestLayout();
}
}
public void setTopInsets(int topInsets) {
if (this.topInsets != topInsets) {
this.topInsets = topInsets;
requestLayout();
}
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
@@ -78,7 +85,7 @@ public class GalleryHeader extends ViewGroup {
} else {
left = width - paddingRight - lp.rightMargin - view.getMeasuredWidth();
}
rect.set(left, lp.topMargin, left + view.getMeasuredWidth(), lp.topMargin + view.getMeasuredHeight());
rect.set(left, lp.topMargin + topInsets, left + view.getMeasuredWidth(), lp.topMargin + topInsets + view.getMeasuredHeight());
}
@RequiresApi(api = Build.VERSION_CODES.P)
@@ -147,7 +154,7 @@ public class GalleryHeader extends ViewGroup {
View child = getChildAt(i);
measureChild(child, widthMeasureSpec, heightMeasureSpec);
MarginLayoutParams lp = (MarginLayoutParams) child.getLayoutParams();
height = Math.max(height, child.getMeasuredHeight() + lp.topMargin);
height = Math.max(height, child.getMeasuredHeight() + lp.topMargin + topInsets);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && displayCutout != null) {