From 9c2dd94cb76c86e4784f7461869a7bbb844b1dc9 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 14 Sep 2023 15:54:43 +0800 Subject: [PATCH] [mobile] add cutout detect - part 2 --- .../com/fongmi/android/tv/utils/ResUtil.java | 14 +------------- .../android/tv/ui/activity/LiveActivity.java | 4 +++- .../android/tv/ui/activity/VideoActivity.java | 6 +++--- .../android/tv/ui/base/BaseActivity.java | 19 +++++++++++++++++++ app/src/mobile/res/drawable/shape_control.xml | 2 +- 5 files changed, 27 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java index b2766344b..069a7ba7e 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/ResUtil.java @@ -128,19 +128,7 @@ public class ResUtil { return AnimationUtils.loadAnimation(App.get(), resId); } - private static Display getDisplay(Activity activity) { + public static Display getDisplay(Activity activity) { return Build.VERSION.SDK_INT >= Build.VERSION_CODES.R ? activity.getDisplay() : activity.getWindowManager().getDefaultDisplay(); } - - public static void setPadding(Activity activity, ViewGroup layout) { - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) return; - DisplayCutout cutout = getDisplay(activity).getCutout(); - if (cutout == null) return; - int top = cutout.getSafeInsetTop(); - int left = cutout.getSafeInsetLeft(); - int right = cutout.getSafeInsetRight(); - int bottom = cutout.getSafeInsetBottom(); - int padding = left | right | top | bottom; - layout.setPadding(padding, 0, padding, 0); - } } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java index f2013aefb..165a08f79 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java @@ -156,8 +156,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List mFormatTime = new SimpleDateFormat("yyyy-MM-ddHH:mm", Locale.getDefault()); mFormatDate = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); mKeyDown = CustomKeyDownLive.create(this, mBinding.video); - ResUtil.setPadding(this, mBinding.control.getRoot()); mClock = Clock.create(mBinding.widget.time); + setPadding(mBinding.control.getRoot()); mPlayers = new Players().init(this); mObserveChannel = this::start; mHides = new ArrayList<>(); @@ -837,6 +837,8 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List public void setRotate(boolean rotate) { this.rotate = rotate; + if (rotate) resetPadding(mBinding.control.getRoot()); + else setPadding(mBinding.control.getRoot()); } public boolean isStop() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index f7e9cc38c..2e9d878aa 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -851,7 +851,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo if (isFullscreen()) return; App.post(() -> mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)), 50); setRequestedOrientation(mPlayers.isPortrait() ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); - ResUtil.setPadding(this, mBinding.control.getRoot()); mBinding.control.full.setVisibility(View.GONE); mDanmakuContext.setScaleTextSize(1.0f); setSubtitle(Setting.getSubtitle()); @@ -867,7 +866,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo setRequestedOrientation(isPort() ? ActivityInfo.SCREEN_ORIENTATION_USER_PORTRAIT : ActivityInfo.SCREEN_ORIENTATION_FULL_USER); mBinding.episode.scrollToPosition(mEpisodeAdapter.getPosition()); mBinding.control.full.setVisibility(View.VISIBLE); - mBinding.control.getRoot().setPadding(0, 0, 0, 0); mBinding.video.setLayoutParams(mFrameParams); mDanmakuContext.setScaleTextSize(0.8f); App.post(mR3, 2000); @@ -1051,7 +1049,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo } private void checkDanmuImg() { - mBinding.control.danmu.setImageResource(Setting.isDanmu() ? R.drawable.ic_control_danmu_off : R.drawable.ic_control_danmu_on); + mBinding.control.danmu.setImageResource(Setting.isDanmu() ? R.drawable.ic_control_danmu_on : R.drawable.ic_control_danmu_off); } private void createKeep() { @@ -1366,6 +1364,8 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo public void setRotate(boolean rotate) { this.rotate = rotate; + if (rotate) resetPadding(mBinding.control.getRoot()); + else setPadding(mBinding.control.getRoot()); } public boolean isStop() { diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java index 143c21b13..9e4588037 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/base/BaseActivity.java @@ -3,8 +3,11 @@ package com.fongmi.android.tv.ui.base; import android.app.Activity; import android.graphics.Color; import android.graphics.drawable.Drawable; +import android.os.Build; import android.os.Bundle; +import android.view.DisplayCutout; import android.view.View; +import android.view.ViewGroup; import android.view.WindowManager; import androidx.appcompat.app.AppCompatActivity; @@ -64,6 +67,22 @@ public abstract class BaseActivity extends AppCompatActivity { return view.getVisibility() == View.GONE; } + protected void setPadding(ViewGroup layout) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) return; + DisplayCutout cutout = ResUtil.getDisplay(this).getCutout(); + if (cutout == null) return; + int top = cutout.getSafeInsetTop(); + int left = cutout.getSafeInsetLeft(); + int right = cutout.getSafeInsetRight(); + int bottom = cutout.getSafeInsetBottom(); + int padding = left | right | top | bottom; + layout.setPadding(padding, 0, padding, 0); + } + + protected void resetPadding(ViewGroup layout) { + layout.setPadding(0, 0, 0, 0); + } + private void setWall() { try { if (!customWall()) return; diff --git a/app/src/mobile/res/drawable/shape_control.xml b/app/src/mobile/res/drawable/shape_control.xml index 3f9bea0d0..bfde269d7 100644 --- a/app/src/mobile/res/drawable/shape_control.xml +++ b/app/src/mobile/res/drawable/shape_control.xml @@ -2,7 +2,7 @@ - +