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 7c0bf1275..c75dbd0b1 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
@@ -51,7 +51,6 @@ import com.fongmi.android.tv.event.PlayerEvent;
import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.impl.CustomTarget;
-import com.fongmi.android.tv.impl.SubtitleCallback;
import com.fongmi.android.tv.model.SiteViewModel;
import com.fongmi.android.tv.player.ExoUtil;
import com.fongmi.android.tv.player.Players;
@@ -60,7 +59,6 @@ import com.fongmi.android.tv.ui.adapter.QualityAdapter;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.CustomKeyDownVod;
import com.fongmi.android.tv.ui.custom.dialog.DescDialog;
-import com.fongmi.android.tv.ui.custom.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.custom.dialog.TrackDialog;
import com.fongmi.android.tv.ui.presenter.ArrayPresenter;
import com.fongmi.android.tv.ui.presenter.EpisodePresenter;
@@ -96,7 +94,7 @@ import okhttp3.Call;
import okhttp3.Response;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
-public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback, SubtitleCallback {
+public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback {
private ViewGroup.LayoutParams mFrameParams;
private EpisodePresenter mEpisodePresenter;
@@ -281,6 +279,8 @@ 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.text.setAddListener(this::onTextAdd);
+ mBinding.control.text.setSubListener(this::onTextSub);
mBinding.control.speed.setAddListener(this::onSpeedAdd);
mBinding.control.speed.setSubListener(this::onSpeedSub);
mBinding.control.ending.setAddListener(this::onEndingAdd);
@@ -298,7 +298,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
mBinding.control.ending.setOnClickListener(view -> onEnding());
mBinding.control.change2.setOnClickListener(view -> onChange());
mBinding.control.opening.setOnClickListener(view -> onOpening());
- mBinding.control.text.setOnLongClickListener(view -> onTextLong());
mBinding.control.speed.setOnLongClickListener(view -> onSpeedLong());
mBinding.control.reset.setOnLongClickListener(view -> onResetToggle());
mBinding.control.ending.setOnLongClickListener(view -> onEndingReset());
@@ -362,6 +361,11 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
setSubtitle(16);
}
+ private void setSubtitle(int size) {
+ getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ getIjk().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ }
+
private void setScale(int scale) {
getExo().setResizeMode(scale);
getIjk().setResizeMode(scale);
@@ -757,10 +761,18 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
hideControl();
}
- private boolean onTextLong() {
- SubtitleDialog.create(this).show();
- hideControl();
- return true;
+ private void onTextAdd() {
+ int size = Math.min(Setting.getSubtitle() + 1, 48);
+ mBinding.control.text.setText(String.valueOf(size));
+ Setting.putSubtitle(size);
+ setSubtitle(size);
+ }
+
+ private void onTextSub() {
+ int size = Math.max(Setting.getSubtitle() - 1, 14);
+ mBinding.control.text.setText(String.valueOf(size));
+ Setting.putSubtitle(size);
+ setSubtitle(size);
}
private void onToggle() {
@@ -808,6 +820,7 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void hideControl() {
+ mBinding.control.text.setText(R.string.play_track_text);
mBinding.control.getRoot().setVisibility(View.GONE);
App.removeCallbacks(mR1);
}
@@ -1314,12 +1327,6 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
if (isFullscreen()) onKeyCenter();
}
- @Override
- public void setSubtitle(int size) {
- getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size);
- getIjk().getSubtitleView().setFixedTextSize(Dimension.SP, size);
- }
-
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SubtitleDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SubtitleDialog.java
index a3cef6f9b..6574bc6f0 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SubtitleDialog.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SubtitleDialog.java
@@ -2,15 +2,22 @@ package com.fongmi.android.tv.ui.custom.dialog;
import android.view.LayoutInflater;
import android.view.View;
+import android.view.WindowManager;
+import androidx.annotation.Dimension;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentActivity;
+import androidx.media3.common.text.Cue;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.databinding.DialogSubtitleBinding;
import com.fongmi.android.tv.impl.SubtitleCallback;
+import com.fongmi.android.tv.player.ExoUtil;
+import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+import java.util.Arrays;
+
public class SubtitleDialog {
private final DialogSubtitleBinding binding;
@@ -35,18 +42,24 @@ public class SubtitleDialog {
}
private void initDialog() {
+ WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
+ params.width = (int) (ResUtil.getScreenWidth() * 0.45f);
+ dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();
}
private void initView() {
- binding.slider.setValue(value = Setting.getSubtitle());
+ binding.slider.setValue(Setting.getSubtitle());
+ binding.preview.setStyle(ExoUtil.getCaptionStyle());
+ binding.preview.setFixedTextSize(Dimension.SP, value = Setting.getSubtitle());
+ binding.preview.setCues(Arrays.asList(new Cue.Builder().setText("影視天下第一").build()));
}
private void initEvent() {
binding.positive.setOnClickListener(this::onPositive);
binding.negative.setOnClickListener(this::onNegative);
- binding.slider.addOnChangeListener((slider, value, fromUser) -> callback.setSubtitle((int) value));
+ binding.slider.addOnChangeListener((slider, value, fromUser) -> binding.preview.setFixedTextSize(Dimension.SP, value));
}
private void onPositive(View view) {
diff --git a/app/src/leanback/res/drawable/shape_subtitle.xml b/app/src/leanback/res/drawable/shape_subtitle.xml
new file mode 100644
index 000000000..898f65fc7
--- /dev/null
+++ b/app/src/leanback/res/drawable/shape_subtitle.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/leanback/res/layout/dialog_subtitle.xml b/app/src/leanback/res/layout/dialog_subtitle.xml
index eae183a00..644ff8a70 100644
--- a/app/src/leanback/res/layout/dialog_subtitle.xml
+++ b/app/src/leanback/res/layout/dialog_subtitle.xml
@@ -3,10 +3,23 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:gravity="center"
android:orientation="vertical"
android:padding="16dp">
+
+
+
+
+
+
diff --git a/app/src/leanback/res/layout/view_control_vod.xml b/app/src/leanback/res/layout/view_control_vod.xml
index eb4b323f8..6cfc1ab16 100644
--- a/app/src/leanback/res/layout/view_control_vod.xml
+++ b/app/src/leanback/res/layout/view_control_vod.xml
@@ -140,7 +140,7 @@
android:textSize="14sp"
tools:text="預設" />
-