diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java index 904d76bc0..150680a25 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java @@ -123,6 +123,5 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B @Override public void setSubtitle(int size) { mBinding.subtitleText.setText(String.valueOf(size)); - Setting.putSubtitle(size); } } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java index b558a3563..6823e2ea9 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java @@ -56,6 +56,7 @@ import com.fongmi.android.tv.event.ErrorEvent; 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.SubtitleCallback; import com.fongmi.android.tv.model.SiteViewModel; import com.fongmi.android.tv.player.ExoUtil; import com.fongmi.android.tv.player.Players; @@ -111,7 +112,7 @@ import okhttp3.Call; import okhttp3.Response; import tv.danmaku.ijk.media.player.ui.IjkVideoView; -public class VideoActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback { +public class VideoActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback, SubtitleCallback { private ActivityVideoBinding mBinding; private ViewGroup.LayoutParams mFrameParams; @@ -424,11 +425,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List mBinding.control.decode.setText(mPlayers.getDecodeText()); } - 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); @@ -1161,7 +1157,7 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List } private void setTrackVisible(boolean visible) { - mBinding.control.text.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_TEXT) ? View.VISIBLE : View.GONE); + mBinding.control.text.setVisibility(visible && (mPlayers.haveTrack(C.TRACK_TYPE_TEXT) || mPlayers.isExo()) ? View.VISIBLE : View.GONE); mBinding.control.audio.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_AUDIO) ? View.VISIBLE : View.GONE); mBinding.control.video.setVisibility(visible && mPlayers.haveTrack(C.TRACK_TYPE_VIDEO) ? View.VISIBLE : View.GONE); } @@ -1501,6 +1497,12 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List 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/dialog/SubtitleDialog.java b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java index 72d798036..cc90ece28 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java @@ -23,6 +23,7 @@ public class SubtitleDialog { private final DialogSubtitleBinding binding; private final SubtitleCallback callback; private final AlertDialog dialog; + private boolean listen; private int value; public static SubtitleDialog create(FragmentActivity activity) { @@ -35,6 +36,11 @@ public class SubtitleDialog { this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create(); } + public SubtitleDialog listen(boolean listen) { + this.listen = listen; + return this; + } + public void show() { initDialog(); initView(); @@ -52,6 +58,7 @@ public class SubtitleDialog { private void initView() { binding.slider.setValue(Setting.getSubtitle()); binding.preview.setStyle(ExoUtil.getCaptionStyle()); + binding.preview.setVisibility(listen ? View.GONE : View.VISIBLE); binding.preview.setFixedTextSize(Dimension.SP, value = Setting.getSubtitle()); binding.preview.setCues(Arrays.asList(new Cue.Builder().setText("影視天下第一").build())); } @@ -59,11 +66,13 @@ public class SubtitleDialog { private void initEvent() { binding.positive.setOnClickListener(this::onPositive); binding.negative.setOnClickListener(this::onNegative); - binding.slider.addOnChangeListener((slider, value, fromUser) -> binding.preview.setFixedTextSize(Dimension.SP, value)); + if (listen) binding.slider.addOnChangeListener((slider, value, fromUser) -> callback.setSubtitle((int) value)); + else binding.slider.addOnChangeListener((slider, value, fromUser) -> binding.preview.setFixedTextSize(Dimension.SP, value)); } private void onPositive(View view) { callback.setSubtitle((int) binding.slider.getValue()); + Setting.putSubtitle((int) binding.slider.getValue()); dialog.dismiss(); } diff --git a/app/src/leanback/res/drawable/ic_action_choose.xml b/app/src/leanback/res/drawable/ic_action_choose.xml new file mode 100644 index 000000000..a56e7056a --- /dev/null +++ b/app/src/leanback/res/drawable/ic_action_choose.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/leanback/res/drawable/ic_action_size.xml b/app/src/leanback/res/drawable/ic_action_size.xml new file mode 100644 index 000000000..f218cf121 --- /dev/null +++ b/app/src/leanback/res/drawable/ic_action_size.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/leanback/res/layout/dialog_track.xml b/app/src/leanback/res/layout/dialog_track.xml index 852701927..396725f06 100644 --- a/app/src/leanback/res/layout/dialog_track.xml +++ b/app/src/leanback/res/layout/dialog_track.xml @@ -1,10 +1,60 @@ - \ No newline at end of file + android:orientation="vertical"> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java index 7b585a92f..856e85519 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/dialog/TrackDialog.java @@ -90,7 +90,7 @@ public final class TrackDialog extends BaseDialog implements TrackAdapter.OnClic } private void showSubtitle(View view) { - SubtitleDialog.create(activity).show(); + SubtitleDialog.create(activity).listen(true).show(); dismiss(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java index a1b398a92..adaff03fb 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java @@ -65,6 +65,7 @@ public class SubtitleDialog { private void onPositive(DialogInterface dialog, int which) { callback.setSubtitle((int) binding.slider.getValue()); + Setting.putSubtitle((int) binding.slider.getValue()); dialog.dismiss(); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java index 948b0e02c..29da95c35 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingPlayerFragment.java @@ -135,7 +135,6 @@ public class SettingPlayerFragment extends BaseFragment implements UaCallback, B @Override public void setSubtitle(int size) { mBinding.subtitleText.setText(String.valueOf(size)); - Setting.putSubtitle(size); } private void setBackground(View view) { diff --git a/app/src/mobile/res/layout/dialog_track.xml b/app/src/mobile/res/layout/dialog_track.xml index 84a95bcea..be8743736 100644 --- a/app/src/mobile/res/layout/dialog_track.xml +++ b/app/src/mobile/res/layout/dialog_track.xml @@ -54,7 +54,7 @@ android:paddingEnd="16dp" android:paddingBottom="16dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" - app:maxHeight="228dp" + app:maxHeight="212dp" tools:listitem="@layout/adapter_track" /> \ No newline at end of file