diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 577c4ad1e..efdac0b5d 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -31,21 +31,22 @@
播放
+ 片头
+ 片尾
下集
上集
- 准备播放:%s
- 字幕
- 音轨
- 视轨
+ 循环
+ →
+ ←
反转
跨类
- 片头
- 片尾
倒序
- →
- ←
+ 字幕
+ 音轨
+ 视轨
已切换正序播放
已切换倒序播放
+ 准备播放:%s
正在切换解析至「%s」
正在切换线路至「%s」
正在切换站源至「%s」
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index 3e030edb4..9f2e800a9 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -31,21 +31,22 @@
播放
+ 片頭
+ 片尾
下集
上集
- 準備播放:%s
- 字幕
- 音軌
- 視軌
+ 循環
+ →
+ ←
反轉
跨類
- 片頭
- 片尾
倒序
- →
- ←
+ 字幕
+ 音軌
+ 視軌
已切換正序播放
已切換倒序播放
+ 準備播放:%s
正在切换解析至「%s」
正在切換線路至「%s」
正在切換站源至「%s」
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 12ef297b7..0a1f3776b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -32,21 +32,22 @@
Play
+ OP
+ ED
Next
Prev
- Ready to play: %s
- Text
- Audio
- Video
+ Loop
+ →
+ ←
Invert
Across
- OP
- ED
Reverse
- →
- ←
+ Text
+ Audio
+ Video
Normal play switched
Reverse play switched
+ Ready to play: %s
Switching parse to %s
Switching flag to %s
Switching site to %s
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
index 26086a49e..9e22765e1 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
@@ -244,6 +244,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust
mBinding.control.action.text.setOnClickListener(this::onTrack);
mBinding.control.action.audio.setOnClickListener(this::onTrack);
mBinding.control.action.video.setOnClickListener(this::onTrack);
+ mBinding.control.action.loop.setOnClickListener(view -> onLoop());
mBinding.control.action.scale.setOnClickListener(view -> onScale());
mBinding.control.action.speed.setOnClickListener(view -> onSpeed());
mBinding.control.action.player.setOnClickListener(view -> onPlayer());
@@ -534,6 +535,10 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust
hideControl();
}
+ private void onLoop() {
+ mBinding.control.action.loop.setActivated(!mBinding.control.action.loop.isActivated());
+ }
+
private void onScale() {
int index = getScale();
String[] array = ResUtil.getStringArray(R.array.select_scale);
@@ -562,6 +567,13 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust
getPlayer(getFlag(), getEpisode(), false);
}
+ private void onReset() {
+ Clock.get().setCallback(null);
+ if (mFlagAdapter.getItemCount() == 0) return;
+ if (mEpisodeAdapter.getItemCount() == 0) return;
+ getPlayer(getFlag(), getEpisode(), true);
+ }
+
private void onPlayer() {
mPlayers.togglePlayer();
Prefers.putPlayer(mPlayers.getPlayer());
@@ -832,7 +844,7 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust
mBinding.control.size.setText(mPlayers.getSizeText());
break;
case Player.STATE_ENDED:
- checkNext();
+ checkEnded();
break;
}
}
@@ -850,6 +862,14 @@ public class DetailActivity extends BaseActivity implements Clock.Callback, Cust
}
}
+ private void checkEnded() {
+ if (mBinding.control.action.loop.isActivated()) {
+ onReset();
+ } else {
+ checkNext();
+ }
+ }
+
private void setTrackVisible(boolean visible) {
mBinding.control.action.text.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE);
mBinding.control.action.audio.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE);
diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ControlDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ControlDialog.java
index 52c64f77f..6ac745eea 100644
--- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ControlDialog.java
+++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ControlDialog.java
@@ -79,6 +79,7 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis
binding.decode.setText(detail.control.action.decode.getText());
binding.ending.setText(detail.control.action.ending.getText());
binding.opening.setText(detail.control.action.opening.getText());
+ binding.loop.setActivated(detail.control.action.loop.isActivated());
setTrackVisible();
setScaleText();
setParse();
@@ -90,6 +91,7 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis
binding.text.setOnClickListener(v -> dismiss(detail.control.action.text));
binding.audio.setOnClickListener(v -> dismiss(detail.control.action.audio));
binding.video.setOnClickListener(v -> dismiss(detail.control.action.video));
+ binding.loop.setOnClickListener(v -> active(binding.loop, detail.control.action.loop));
binding.player.setOnClickListener(v -> click(binding.player, detail.control.action.player));
binding.decode.setOnClickListener(v -> click(binding.decode, detail.control.action.decode));
binding.ending.setOnClickListener(v -> click(binding.ending, detail.control.action.ending));
@@ -120,6 +122,11 @@ public class ControlDialog extends BaseDialog implements ParseAdapter.OnClickLis
view.setActivated(true);
}
+ private void active(View view, TextView target) {
+ target.performClick();
+ view.setActivated(target.isActivated());
+ }
+
private void click(TextView view, TextView target) {
target.performClick();
view.setText(target.getText());
diff --git a/app/src/mobile/res/layout/dialog_control.xml b/app/src/mobile/res/layout/dialog_control.xml
index ea7efe495..ed0174fa9 100644
--- a/app/src/mobile/res/layout/dialog_control.xml
+++ b/app/src/mobile/res/layout/dialog_control.xml
@@ -169,6 +169,18 @@
android:textSize="14sp"
tools:text="硬解" />
+
+
+
+