diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java index 732fe570d..71debe7a4 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java @@ -79,15 +79,15 @@ import tv.danmaku.ijk.media.player.ui.IjkVideoView; public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback { - private ActivityDetailBinding mBinding; private ViewGroup.LayoutParams mFrameParams; - private ArrayObjectAdapter mFlagAdapter; - private ArrayObjectAdapter mArrayAdapter; + private EpisodePresenter mEpisodePresenter; private ArrayObjectAdapter mEpisodeAdapter; + private ArrayObjectAdapter mSearchAdapter; + private ArrayObjectAdapter mArrayAdapter; private ArrayObjectAdapter mParseAdapter; + private ArrayObjectAdapter mFlagAdapter; private ArrayObjectAdapter mPartAdapter; - private ArrayObjectAdapter mSearchAdapter; - private EpisodePresenter mEpisodePresenter; + private ActivityDetailBinding mBinding; private PartPresenter mPartPresenter; private CustomKeyDownVod mKeyDown; private ExecutorService mExecutor; @@ -230,6 +230,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.control.text.setOnClickListener(this::onTrack); mBinding.control.audio.setOnClickListener(this::onTrack); mBinding.control.video.setOnClickListener(this::onTrack); + mBinding.control.loop.setOnClickListener(view -> onLoop()); mBinding.control.next.setOnClickListener(view -> checkNext()); mBinding.control.prev.setOnClickListener(view -> checkPrev()); mBinding.control.scale.setOnClickListener(view -> onScale()); @@ -514,6 +515,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis if (!isFullscreen()) enterFullscreen(); } + private void onLoop() { + mBinding.control.loop.setActivated(!mBinding.control.loop.isActivated()); + } + private void checkNext() { if (mHistory.isRevPlay()) onPrev(); else onNext(); @@ -567,10 +572,14 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis } private void onReset() { + onReset(isReplay()); + } + + private void onReset(boolean replay) { Clock.get().setCallback(null); if (mFlagAdapter.size() == 0) return; if (mEpisodeAdapter.size() == 0) return; - getPlayer(getFlag(), getEpisode(), isReplay()); + getPlayer(getFlag(), getEpisode(), replay); } private boolean onResetToggle() { @@ -800,7 +809,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis mBinding.widget.size.setText(mPlayers.getSizeText()); break; case Player.STATE_ENDED: - checkNext(); + checkEnded(); break; } } @@ -811,6 +820,14 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis setInitTrack(true); } + private void checkEnded() { + if (mBinding.control.loop.isActivated()) { + onReset(true); + } else { + checkNext(); + } + } + private void setTrackVisible(boolean visible) { mBinding.control.text.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE); mBinding.control.audio.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE); diff --git a/app/src/leanback/res/layout/adapter_config.xml b/app/src/leanback/res/layout/adapter_config.xml index 8f07372a3..eef0b9a99 100644 --- a/app/src/leanback/res/layout/adapter_config.xml +++ b/app/src/leanback/res/layout/adapter_config.xml @@ -8,7 +8,7 @@ \ No newline at end of file + app:maxHeight="352dp" /> \ No newline at end of file diff --git a/app/src/leanback/res/layout/view_control_vod.xml b/app/src/leanback/res/layout/view_control_vod.xml index 6f50b78be..a5dbc7d52 100644 --- a/app/src/leanback/res/layout/view_control_vod.xml +++ b/app/src/leanback/res/layout/view_control_vod.xml @@ -117,6 +117,18 @@ android:textSize="14sp" tools:text="預設" /> + +