diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java index f12040951..8e5c9e9d2 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/BaseDialog.java @@ -2,6 +2,7 @@ package com.fongmi.android.tv.ui.dialog; import android.app.Dialog; import android.content.DialogInterface; +import android.os.Build; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -66,4 +67,12 @@ public abstract class BaseDialog extends BottomSheetDialogFragment { behavior.setState(BottomSheetBehavior.STATE_EXPANDED); behavior.setSkipCollapsed(true); } + + @Override + public void onStart() { + super.onStart(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && getDialog().getWindow() != null) { + getDialog().getWindow().setNavigationBarContrastEnforced(false); + } + } } diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Util.java b/app/src/main/java/com/fongmi/android/tv/utils/Util.java index 15d244b6e..1315e61d0 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Util.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Util.java @@ -15,11 +15,13 @@ import android.text.Html; import android.text.TextUtils; import android.view.View; import android.view.Window; -import android.view.WindowInsets; -import android.view.WindowInsetsController; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsCompat; +import androidx.core.view.WindowInsetsControllerCompat; + import com.fongmi.android.tv.App; import com.fongmi.android.tv.BuildConfig; import com.fongmi.android.tv.R; @@ -44,13 +46,9 @@ public class Util { } public static void hideSystemUI(Window window) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - window.setDecorFitsSystemWindows(false); - window.getInsetsController().hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); - window.getInsetsController().setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); - } else { - window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); - } + WindowInsetsControllerCompat insets = WindowCompat.getInsetsController(window, window.getDecorView()); + insets.setSystemBarsBehavior(WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); + insets.hide(WindowInsetsCompat.Type.systemBars()); } public static void showSystemUI(Activity activity) { @@ -58,13 +56,7 @@ public class Util { } public static void showSystemUI(Window window) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { - window.setDecorFitsSystemWindows(true); - window.getInsetsController().show(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); - window.getInsetsController().setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_DEFAULT); - } else { - window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); - } + WindowCompat.getInsetsController(window, window.getDecorView()).show(WindowInsetsCompat.Type.systemBars()); } public static void showKeyboard(View view) { 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 0834b4fb8..696965a0f 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 @@ -8,7 +8,6 @@ import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.provider.Settings; import android.text.SpannableStringBuilder; @@ -25,6 +24,9 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.lifecycle.Observer; @@ -254,11 +256,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo return mBinding.getRoot().getTag().equals("port"); } - @Override - protected boolean transparent() { - return false; - } - @Override protected ViewBinding getBinding() { return mBinding = ActivityVideoBinding.inflate(getLayoutInflater()); @@ -380,6 +377,14 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo mBinding.control.action.danmaku.setVisibility(Setting.isDanmakuLoad() ? View.VISIBLE : View.GONE); mBinding.control.action.reset.setText(ResUtil.getStringArray(R.array.select_reset)[Setting.getReset()]); mBinding.video.addOnLayoutChangeListener((view, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> mPiP.update(this, view)); + WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView()).setAppearanceLightStatusBars(false); + ViewCompat.setOnApplyWindowInsetsListener(mBinding.getRoot(), (v, windowInsets) -> { + int top = windowInsets.getInsets(WindowInsetsCompat.Type.statusBars()).top; + ViewGroup.LayoutParams lp = mBinding.statusBar.getLayoutParams(); + lp.height = top; + mBinding.statusBar.setLayoutParams(lp); + return windowInsets; + }); } private void setVideoView(boolean isInPictureInPictureMode) { 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 1f6696262..1d246bef6 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 @@ -51,10 +51,6 @@ public abstract class BaseActivity extends AppCompatActivity { return this; } - protected boolean transparent() { - return true; - } - protected boolean customWall() { return true; } diff --git a/app/src/mobile/res/layout-sw600dp/activity_video.xml b/app/src/mobile/res/layout-sw600dp/activity_video.xml index 64a56450d..55b8bd516 100644 --- a/app/src/mobile/res/layout-sw600dp/activity_video.xml +++ b/app/src/mobile/res/layout-sw600dp/activity_video.xml @@ -11,10 +11,17 @@ android:layout_width="match_parent" android:layout_height="match_parent"> + + + + diff --git a/app/src/mobile/res/values/styles.xml b/app/src/mobile/res/values/styles.xml index 6742815c1..f2d40e886 100644 --- a/app/src/mobile/res/values/styles.xml +++ b/app/src/mobile/res/values/styles.xml @@ -39,6 +39,8 @@ @color/primaryDark false false + @color/transparent + @color/transparent @style/ModalBottomSheetDialog