[leanback] add subtitle size setting - part 2

pull/137/head
FongMi 3 years ago
parent 0e40728e8b
commit 7f91b329ba
  1. 35
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/DetailActivity.java
  2. 17
      app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SubtitleDialog.java
  3. 9
      app/src/leanback/res/drawable/shape_subtitle.xml
  4. 19
      app/src/leanback/res/layout/dialog_subtitle.xml
  5. 2
      app/src/leanback/res/layout/view_control_vod.xml

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

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

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/grey_900" />
<corners android:radius="4dp" />
</shape>

@ -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">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/shape_subtitle">
<androidx.media3.ui.SubtitleView
android:id="@+id/preview"
android:layout_width="match_parent"
android:layout_height="76dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp" />
</FrameLayout>
<com.google.android.material.slider.Slider
android:id="@+id/slider"
android:layout_width="match_parent"
@ -14,8 +27,8 @@
android:layout_marginTop="16dp"
android:nextFocusDown="@id/positive"
android:stepSize="1"
android:valueFrom="16"
android:valueTo="60"
android:valueFrom="14"
android:valueTo="48"
app:thumbColor="@color/blue_500"
app:trackColorActive="@color/blue_500"
app:trackColorInactive="@color/blue_50" />

@ -140,7 +140,7 @@
android:textSize="14sp"
tools:text="預設" />
<TextView
<com.fongmi.android.tv.ui.custom.CustomUpDownView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

Loading…
Cancel
Save