diff --git a/app/src/main/java/com/fongmi/bear/bean/Vod.java b/app/src/main/java/com/fongmi/bear/bean/Vod.java index c470fbe68..5ddd5ca60 100644 --- a/app/src/main/java/com/fongmi/bear/bean/Vod.java +++ b/app/src/main/java/com/fongmi/bear/bean/Vod.java @@ -247,10 +247,6 @@ public class Vod { return activated; } - public void setActivated(boolean activated) { - this.activated = activated; - } - private void deactivated() { this.activated = false; } diff --git a/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java b/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java index 0ffd81551..9d6a5ccdc 100644 --- a/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java +++ b/app/src/main/java/com/fongmi/bear/ui/activity/DetailActivity.java @@ -56,6 +56,7 @@ public class DetailActivity extends BaseActivity implements KeyDownImpl { private boolean mFullscreen; private KeyDown mKeyDown; private View mOldView; + private int mCurrent; private String getId() { return getIntent().getStringExtra("id"); @@ -66,7 +67,12 @@ public class DetailActivity extends BaseActivity implements KeyDownImpl { } private Vod.Flag.Episode getEpisode() { - return getVodFlag().getEpisodes().get(mBinding.episode.getSelectedPosition()); + return (Vod.Flag.Episode) mEpisodeAdapter.get(getEpisodePosition()); + } + + private int getEpisodePosition() { + for (int i = 0; i < mEpisodeAdapter.size(); i++) if (((Vod.Flag.Episode) mEpisodeAdapter.get(i)).isActivated()) return i; + return 0; } public static void start(Activity activity, String id) { @@ -140,9 +146,10 @@ public class DetailActivity extends BaseActivity implements KeyDownImpl { } private void getPlayer(Vod.Flag.Episode item) { + setEpisodeActivated(item); mBinding.progress.getRoot().setVisibility(View.VISIBLE); mSiteViewModel.playerContent(getVodFlag().getFlag(), item.getUrl()); - setEpisodeActivated(item); + if (mFullscreen) Notify.show(ResUtil.getString(R.string.play_ready, item.getName())); } private void setViewModel() { @@ -184,9 +191,10 @@ public class DetailActivity extends BaseActivity implements KeyDownImpl { } private void setEpisodeActivated(Vod.Flag.Episode item) { + mCurrent = mBinding.flag.getSelectedPosition(); for (int i = 0; i < mFlagAdapter.size(); i++) { Vod.Flag flag = (Vod.Flag) mFlagAdapter.get(i); - if (mBinding.flag.getSelectedPosition() == i) flag.setActivated(item); + if (mCurrent == i) flag.setActivated(item); else flag.deactivated(); } mEpisodeAdapter.notifyArrayItemRangeChanged(0, mEpisodeAdapter.size()); @@ -209,32 +217,33 @@ public class DetailActivity extends BaseActivity implements KeyDownImpl { } private void enterFullscreen() { - mBinding.frame.setFocusable(false); - mBinding.video.setUseController(true); + mBinding.frame.setForeground(null); mBinding.frame.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT)); + mBinding.flag.setSelectedPosition(mCurrent); + mBinding.video.setUseController(true); mFullscreen = true; } private void exitFullscreen() { - mBinding.frame.setFocusable(true); - mBinding.video.setUseController(false); + mBinding.frame.setForeground(ResUtil.getDrawable(R.drawable.selector_video)); mBinding.frame.setLayoutParams(mFrameParams); + mBinding.video.setUseController(false); mFullscreen = false; } private void onNext() { - int max = getVodFlag().getEpisodes().size() - 1; - int current = mBinding.episode.getSelectedPosition(); + int current = getEpisodePosition(); + int max = mEpisodeAdapter.size() - 1; current = ++current > max ? max : current; - Vod.Flag.Episode item = getVodFlag().getEpisodes().get(current); + Vod.Flag.Episode item = (Vod.Flag.Episode) mEpisodeAdapter.get(current); if (item.isActivated()) Notify.show(R.string.error_play_next); else getPlayer(item); } private void onPrev() { - int current = mBinding.episode.getSelectedPosition(); + int current = getEpisodePosition(); current = --current < 0 ? 0 : current; - Vod.Flag.Episode item = getVodFlag().getEpisodes().get(current); + Vod.Flag.Episode item = (Vod.Flag.Episode) mEpisodeAdapter.get(current); if (item.isActivated()) Notify.show(R.string.error_play_prev); else getPlayer(item); } diff --git a/app/src/main/java/com/fongmi/bear/utils/ResUtil.java b/app/src/main/java/com/fongmi/bear/utils/ResUtil.java index a5ac0ac9e..ddbf7899a 100644 --- a/app/src/main/java/com/fongmi/bear/utils/ResUtil.java +++ b/app/src/main/java/com/fongmi/bear/utils/ResUtil.java @@ -1,9 +1,12 @@ package com.fongmi.bear.utils; +import android.graphics.drawable.Drawable; import android.util.DisplayMetrics; import androidx.annotation.ArrayRes; +import androidx.annotation.DrawableRes; import androidx.annotation.StringRes; +import androidx.core.content.ContextCompat; import com.fongmi.bear.App; @@ -32,4 +35,8 @@ public class ResUtil { public static CharSequence[] getStringArray(@ArrayRes int resId) { return App.get().getResources().getStringArray(resId); } + + public static Drawable getDrawable(@DrawableRes int resId) { + return ContextCompat.getDrawable(App.get(), resId); + } }