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 91efad141..6fb566e79 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
@@ -230,6 +230,10 @@ 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.ending.setAddListener(this::onEndingAdd);
+ mBinding.control.ending.setSubListener(this::onEndingSub);
+ mBinding.control.opening.setAddListener(this::onOpeningAdd);
+ mBinding.control.opening.setSubListener(this::onOpeningSub);
mBinding.control.loop.setOnClickListener(view -> onLoop());
mBinding.control.next.setOnClickListener(view -> checkNext());
mBinding.control.prev.setOnClickListener(view -> checkPrev());
@@ -591,30 +595,52 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
long current = mPlayers.getPosition();
long duration = mPlayers.getDuration();
if (current < 0 || current > duration / 2) return;
- mHistory.setOpening(current);
- mBinding.control.opening.setText(mPlayers.stringToTime(mHistory.getOpening()));
+ setOpening(current);
+ }
+
+ private void onOpeningAdd() {
+ setOpening(Math.min(mHistory.getOpening() + 1000, mPlayers.getDuration() / 2));
+ }
+
+ private void onOpeningSub() {
+ setOpening(Math.max(0, mHistory.getOpening() - 1000));
}
private boolean onOpeningReset() {
- mHistory.setOpening(0);
- mBinding.control.opening.setText(R.string.play_op);
+ setOpening(0);
return true;
}
+ private void setOpening(long opening) {
+ mHistory.setOpening(opening);
+ mBinding.control.opening.setText(opening == 0 ? getString(R.string.play_op) : mPlayers.stringToTime(mHistory.getOpening()));
+ }
+
private void onEnding() {
long current = mPlayers.getPosition();
long duration = mPlayers.getDuration();
if (current < 0 || current < duration / 2) return;
- mHistory.setEnding(duration - current);
- mBinding.control.ending.setText(mPlayers.stringToTime(mHistory.getEnding()));
+ setEnding(duration - current);
+ }
+
+ private void onEndingAdd() {
+ setEnding(Math.min(mPlayers.getDuration() / 2, mHistory.getEnding() + 1000));
+ }
+
+ private void onEndingSub() {
+ setEnding(Math.max(0, mHistory.getEnding() - 1000));
}
private boolean onEndingReset() {
- mHistory.setEnding(0);
- mBinding.control.ending.setText(R.string.play_ed);
+ setEnding(0);
return true;
}
+ private void setEnding(long ending) {
+ mHistory.setEnding(ending);
+ mBinding.control.ending.setText(ending == 0 ? getString(R.string.play_ed) : mPlayers.stringToTime(mHistory.getEnding()));
+ }
+
private void onPlayer() {
mPlayers.togglePlayer();
Prefers.putPlayer(mPlayers.getPlayer());
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomOpEdView.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomOpEdView.java
new file mode 100644
index 000000000..f5a92f9ce
--- /dev/null
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/CustomOpEdView.java
@@ -0,0 +1,59 @@
+package com.fongmi.android.tv.ui.custom;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.KeyEvent;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.appcompat.widget.AppCompatTextView;
+
+import com.fongmi.android.tv.utils.Utils;
+
+public class CustomOpEdView extends AppCompatTextView {
+
+ private AddListener addListener;
+ private SubListener subListener;
+
+ public CustomOpEdView(@NonNull Context context) {
+ super(context);
+ }
+
+ public CustomOpEdView(@NonNull Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+ }
+
+ public void setAddListener(AddListener addListener) {
+ this.addListener = addListener;
+ }
+
+ public void setSubListener(SubListener subListener) {
+ this.subListener = subListener;
+ }
+
+ private boolean hasEvent(KeyEvent event) {
+ return event.getAction() == KeyEvent.ACTION_DOWN && (Utils.isUpKey(event) || Utils.isDownKey(event));
+ }
+
+ @Override
+ public boolean dispatchKeyEvent(KeyEvent event) {
+ if (hasEvent(event)) return onKeyDown(event);
+ else return super.dispatchKeyEvent(event);
+ }
+
+ private boolean onKeyDown(KeyEvent event) {
+ if (Utils.isUpKey(event)) addListener.onAdd();
+ if (Utils.isDownKey(event)) subListener.onSud();
+ return true;
+ }
+
+ public interface AddListener {
+
+ void onAdd();
+ }
+
+ public interface SubListener {
+
+ void onSud();
+ }
+}
diff --git a/app/src/leanback/res/layout/view_control_vod.xml b/app/src/leanback/res/layout/view_control_vod.xml
index a5dbc7d52..00e448088 100644
--- a/app/src/leanback/res/layout/view_control_vod.xml
+++ b/app/src/leanback/res/layout/view_control_vod.xml
@@ -174,7 +174,7 @@
android:visibility="gone"
tools:visibility="visible" />
-
-