pull/594/head
jhengazuki 7 months ago
parent 642a0009ee
commit 9b22bab3ee
  1. 29
      app/src/main/java/com/fongmi/android/tv/utils/Util.java
  2. 7
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 23
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/EpisodeListDialog.java

@ -16,6 +16,8 @@ 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;
@ -38,17 +40,32 @@ public class Util {
else showSystemUI(activity);
}
public static void showSystemUI(Activity activity) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
}
public static void hideSystemUI(Activity activity) {
hideSystemUI(activity.getWindow());
}
public static void hideSystemUI(Window window) {
int flags = View.SYSTEM_UI_FLAG_LOW_PROFILE | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
window.getDecorView().setSystemUiVisibility(flags);
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);
}
}
public static void showSystemUI(Activity activity) {
showSystemUI(activity.getWindow());
}
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);
}
}
public static void showKeyboard(View view) {

@ -3,7 +3,6 @@ package com.fongmi.android.tv.ui.activity;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
@ -127,7 +126,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
private SiteViewModel mViewModel;
private FlagAdapter mFlagAdapter;
private CustomKeyDown mKeyDown;
private List<Dialog> mDialogs;
private List<String> mBroken;
private History mHistory;
private Players mPlayers;
@ -286,7 +284,6 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
mObservePlayer = this::setPlayer;
mObserveSearch = this::setSearch;
mPlayers = Players.create(this);
mDialogs = new ArrayList<>();
mBroken = new ArrayList<>();
mClock = Clock.create();
mR1 = this::hideControl;
@ -835,7 +832,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void onEpisodes() {
mDialogs.add(EpisodeListDialog.create(this).episodes(mEpisodeAdapter.getItems()).show());
EpisodeListDialog.create(this).episodes(mEpisodeAdapter.getItems()).show();
}
private void onChoose() {
@ -963,9 +960,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
}
private void hideSheet() {
for (Dialog dialog : mDialogs) dialog.dismiss();
for (Fragment fragment : getSupportFragmentManager().getFragments()) if (fragment instanceof BottomSheetDialogFragment) ((BottomSheetDialogFragment) fragment).dismiss();
mDialogs.clear();
}
private void setTraffic() {

@ -1,6 +1,9 @@
package com.fongmi.android.tv.ui.dialog;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.FrameLayout;
import androidx.fragment.app.FragmentActivity;
import androidx.lifecycle.ViewModelProvider;
@ -10,6 +13,8 @@ import com.fongmi.android.tv.databinding.DialogEpisodeListBinding;
import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.ui.adapter.EpisodeAdapter;
import com.fongmi.android.tv.ui.base.ViewType;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.Util;
import com.google.android.material.sidesheet.SideSheetDialog;
import java.util.List;
@ -36,10 +41,9 @@ public class EpisodeListDialog implements EpisodeAdapter.OnClickListener {
return this;
}
public SideSheetDialog show() {
public void show() {
initDialog();
initView();
return dialog;
}
private void initDialog() {
@ -47,7 +51,22 @@ public class EpisodeListDialog implements EpisodeAdapter.OnClickListener {
dialog = new SideSheetDialog(activity);
dialog.setContentView(binding.getRoot());
dialog.getBehavior().setDraggable(false);
dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Util.hideSystemUI(dialog.getWindow());
dialog.getWindow().setDimAmount(0);
dialog.show();
setWidth();
}
private void setWidth() {
int width = 0;
int padding = ResUtil.dp2px(56);
int maxWidth = ResUtil.getScreenWidth() / 3;
for (Episode item : episodes) width = Math.max(width, ResUtil.getTextWidth(item.getName(), 14));
FrameLayout sheet = dialog.findViewById(com.google.android.material.R.id.m3_side_sheet);
ViewGroup.LayoutParams params = sheet.getLayoutParams();
params.width = Math.min(width + padding, maxWidth);
sheet.setLayoutParams(params);
}
private void initView() {

Loading…
Cancel
Save