[mobile] add loop control

pull/123/head
FongMi 3 years ago
parent 2450e4525e
commit 84a7b7d02c
  1. 17
      app/src/main/res/values-zh-rCN/strings.xml
  2. 17
      app/src/main/res/values-zh-rTW/strings.xml
  3. 17
      app/src/main/res/values/strings.xml
  4. 22
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  5. 7
      app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ControlDialog.java
  6. 12
      app/src/mobile/res/layout/dialog_control.xml
  7. 6
      app/src/mobile/res/layout/view_control_vod_action.xml

@ -31,21 +31,22 @@
<!-- Play -->
<string name="play">播放</string>
<string name="play_op">片头</string>
<string name="play_ed">片尾</string>
<string name="play_next">下集</string>
<string name="play_prev">上集</string>
<string name="play_ready">准备播放:<xliff:g name="name">%s</xliff:g></string>
<string name="play_track_text">字幕</string>
<string name="play_track_audio">音轨</string>
<string name="play_track_video">视轨</string>
<string name="play_loop">循环</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_invert">反转</string>
<string name="play_across">跨类</string>
<string name="play_op">片头</string>
<string name="play_ed">片尾</string>
<string name="play_reverse">倒序</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_track_text">字幕</string>
<string name="play_track_audio">音轨</string>
<string name="play_track_video">视轨</string>
<string name="play_forward_hint">已切换正序播放</string>
<string name="play_backward_hint">已切换倒序播放</string>
<string name="play_ready">准备播放:<xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_parse">正在切换解析至「<xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_flag">正在切换线路至「<xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_site">正在切换站源至「<xliff:g name="name">%s</xliff:g></string>

@ -31,21 +31,22 @@
<!-- Play -->
<string name="play">播放</string>
<string name="play_op">片頭</string>
<string name="play_ed">片尾</string>
<string name="play_next">下集</string>
<string name="play_prev">上集</string>
<string name="play_ready">準備播放:<xliff:g name="name">%s</xliff:g></string>
<string name="play_track_text">字幕</string>
<string name="play_track_audio">音軌</string>
<string name="play_track_video">視軌</string>
<string name="play_loop">循環</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_invert">反轉</string>
<string name="play_across">跨類</string>
<string name="play_op">片頭</string>
<string name="play_ed">片尾</string>
<string name="play_reverse">倒序</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_track_text">字幕</string>
<string name="play_track_audio">音軌</string>
<string name="play_track_video">視軌</string>
<string name="play_forward_hint">已切換正序播放</string>
<string name="play_backward_hint">已切換倒序播放</string>
<string name="play_ready">準備播放:<xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_parse">正在切换解析至「<xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_flag">正在切換線路至「<xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_site">正在切換站源至「<xliff:g name="name">%s</xliff:g></string>

@ -32,21 +32,22 @@
<!-- Play -->
<string name="play">Play</string>
<string name="play_op">OP</string>
<string name="play_ed">ED</string>
<string name="play_next">Next</string>
<string name="play_prev">Prev</string>
<string name="play_ready">Ready to play: <xliff:g name="name">%s</xliff:g></string>
<string name="play_track_text">Text</string>
<string name="play_track_audio">Audio</string>
<string name="play_track_video">Video</string>
<string name="play_loop">Loop</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_invert">Invert</string>
<string name="play_across">Across</string>
<string name="play_op">OP</string>
<string name="play_ed">ED</string>
<string name="play_reverse">Reverse</string>
<string name="play_forward"></string>
<string name="play_backward"></string>
<string name="play_track_text">Text</string>
<string name="play_track_audio">Audio</string>
<string name="play_track_video">Video</string>
<string name="play_forward_hint">Normal play switched</string>
<string name="play_backward_hint">Reverse play switched</string>
<string name="play_ready">Ready to play: <xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_parse">Switching parse to <xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_flag">Switching flag to <xliff:g name="name">%s</xliff:g></string>
<string name="play_switch_site">Switching site to <xliff:g name="name">%s</xliff:g></string>

@ -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);

@ -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());

@ -169,6 +169,18 @@
android:textSize="14sp"
tools:text="硬解" />
<TextView
android:id="@+id/loop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="8dp"
android:background="@drawable/selector_accent"
android:foreground="?android:attr/selectableItemBackground"
android:gravity="center"
android:text="@string/play_loop"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/opening"
android:layout_width="wrap_content"

@ -34,6 +34,12 @@
style="@style/Control.Action"
tools:text="縮放" />
<TextView
android:id="@+id/loop"
style="@style/Control.Action"
android:text="@string/play_loop"
android:textColor="@color/text" />
<TextView
android:id="@+id/episodes"
style="@style/Control.Action"

Loading…
Cancel
Save