[leanback] support subtitle move up and down

pull/586/head
FongMi 1 year ago
parent ac89d2b3e8
commit 7d7e6c9849
  1. 33
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/CastActivity.java
  2. 23
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  3. 15
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingPlayerActivity.java
  4. 35
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  5. 83
      app/src/leanback/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java
  6. 0
      app/src/leanback/res/drawable/ic_action_subtitle.xml
  7. 10
      app/src/leanback/res/drawable/ic_subtitle_down.xml
  8. 10
      app/src/leanback/res/drawable/ic_subtitle_large.xml
  9. 10
      app/src/leanback/res/drawable/ic_subtitle_reset.xml
  10. 10
      app/src/leanback/res/drawable/ic_subtitle_small.xml
  11. 10
      app/src/leanback/res/drawable/ic_subtitle_up.xml
  12. 29
      app/src/leanback/res/layout/activity_setting_player.xml
  13. 109
      app/src/leanback/res/layout/dialog_subtitle.xml
  14. 4
      app/src/leanback/res/layout/dialog_track.xml
  15. 2
      app/src/leanback/res/layout/view_control_vod.xml
  16. 19
      app/src/main/java/com/fongmi/android/tv/ui/dialog/SubtitleDialog.java
  17. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
  18. 2
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java

@ -9,7 +9,6 @@ import android.os.IBinder;
import android.view.KeyEvent;
import android.view.View;
import androidx.annotation.Dimension;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.media3.common.C;
@ -34,11 +33,11 @@ import com.fongmi.android.tv.event.ActionEvent;
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.SubtitleCallback;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.player.exo.ExoUtil;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.CustomKeyDownCast;
import com.fongmi.android.tv.ui.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.dialog.TrackDialog;
import com.fongmi.android.tv.utils.Clock;
import com.fongmi.android.tv.utils.KeyUtil;
@ -49,7 +48,7 @@ import org.fourthline.cling.support.contentdirectory.DIDLParser;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
public class CastActivity extends BaseActivity implements CustomKeyDownCast.Listener, TrackDialog.Listener, RenderControl, ServiceConnection, Clock.Callback, SubtitleCallback {
public class CastActivity extends BaseActivity implements CustomKeyDownCast.Listener, TrackDialog.Listener, RenderControl, ServiceConnection, Clock.Callback {
private ActivityCastBinding mBinding;
private DLNARendererService mService;
@ -95,8 +94,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
@SuppressLint("ClickableViewAccessibility")
protected void initEvent() {
mBinding.control.seek.setListener(mPlayers);
mBinding.control.text.setUpListener(this::onTextAdd);
mBinding.control.text.setDownListener(this::onTextSub);
mBinding.control.speed.setUpListener(this::onSpeedAdd);
mBinding.control.speed.setDownListener(this::onSpeedSub);
mBinding.control.text.setOnClickListener(this::onTrack);
@ -144,16 +141,11 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
}
private void setSubtitleView() {
setSubtitle(Setting.getSubtitle());
mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false);
mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption());
}
@Override
public void setSubtitle(int size) {
mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
private void setDecode() {
mBinding.control.decode.setText(mPlayers.getDecodeText());
}
@ -205,20 +197,6 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
hideControl();
}
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() {
if (isVisible(mBinding.control.getRoot())) hideControl();
else showControl();
@ -392,6 +370,11 @@ public class CastActivity extends BaseActivity implements CustomKeyDownCast.List
public void onTrackClick(Track item) {
}
@Override
public void onSubtitleClick() {
App.post(() -> SubtitleDialog.create().view(mBinding.exo.getSubtitleView()).show(this), 200);
}
@Override
public void onTimeChanged() {
position = mPlayers.getPosition();

@ -7,7 +7,6 @@ import android.graphics.drawable.Drawable;
import android.view.KeyEvent;
import android.view.View;
import androidx.annotation.Dimension;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.leanback.widget.ArrayObjectAdapter;
@ -42,7 +41,6 @@ import com.fongmi.android.tv.event.RefreshEvent;
import com.fongmi.android.tv.impl.Callback;
import com.fongmi.android.tv.impl.LiveCallback;
import com.fongmi.android.tv.impl.PassCallback;
import com.fongmi.android.tv.impl.SubtitleCallback;
import com.fongmi.android.tv.model.LiveViewModel;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.player.exo.ExoUtil;
@ -70,7 +68,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, EpgDataPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, PassCallback, LiveCallback, SubtitleCallback {
public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, EpgDataPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, PassCallback, LiveCallback {
private ActivityLiveBinding mBinding;
private ArrayObjectAdapter mChannelAdapter;
@ -158,7 +156,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.control.change.setOnClickListener(view -> onChange());
mBinding.control.player.setOnClickListener(view -> onChoose());
mBinding.control.decode.setOnClickListener(view -> onDecode());
mBinding.control.text.setOnLongClickListener(view -> onTextLong());
mBinding.control.speed.setOnLongClickListener(view -> onSpeedLong());
mBinding.video.setOnTouchListener((view, event) -> mKeyDown.onTouchEvent(event));
mBinding.group.addOnChildViewHolderSelectedListener(new OnChildViewHolderSelectedListener() {
@ -192,16 +189,11 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
}
private void setSubtitleView() {
setSubtitle(Setting.getSubtitle());
mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false);
mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption());
}
@Override
public void setSubtitle(int size) {
mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
private void setDecode() {
mBinding.control.decode.setText(mPlayers.getDecodeText());
}
@ -334,12 +326,6 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
hideControl();
}
private boolean onTextLong() {
SubtitleDialog.create(this).show();
hideControl();
return true;
}
private void onHome() {
LiveDialog.create(this).show();
hideControl();
@ -646,6 +632,11 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
public void onTrackClick(Track item) {
}
@Override
public void onSubtitleClick() {
App.post(() -> SubtitleDialog.create().view(mBinding.exo.getSubtitleView()).show(this), 200);
}
@Override
public void setLive(Live item) {
if (item.isActivated()) item.getGroups().clear();

@ -12,18 +12,16 @@ import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.databinding.ActivitySettingPlayerBinding;
import com.fongmi.android.tv.impl.BufferCallback;
import com.fongmi.android.tv.impl.SpeedCallback;
import com.fongmi.android.tv.impl.SubtitleCallback;
import com.fongmi.android.tv.impl.UaCallback;
import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.dialog.BufferDialog;
import com.fongmi.android.tv.ui.dialog.SpeedDialog;
import com.fongmi.android.tv.ui.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.dialog.UaDialog;
import com.fongmi.android.tv.utils.ResUtil;
import java.text.DecimalFormat;
public class SettingPlayerActivity extends BaseActivity implements UaCallback, BufferCallback, SpeedCallback, SubtitleCallback {
public class SettingPlayerActivity extends BaseActivity implements UaCallback, BufferCallback, SpeedCallback {
private ActivitySettingPlayerBinding mBinding;
private DecimalFormat format;
@ -54,7 +52,6 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B
mBinding.tunnelText.setText(getSwitch(Setting.isTunnel()));
mBinding.speedText.setText(format.format(Setting.getSpeed()));
mBinding.bufferText.setText(String.valueOf(Setting.getBuffer()));
mBinding.subtitleText.setText(String.valueOf(Setting.getSubtitle()));
mBinding.rtspText.setText((rtsp = ResUtil.getStringArray(R.array.select_rtsp))[Setting.getRtsp()]);
mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Setting.getScale()]);
mBinding.renderText.setText((render = ResUtil.getStringArray(R.array.select_render))[Setting.getRender()]);
@ -71,7 +68,6 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B
mBinding.render.setOnClickListener(this::setRender);
mBinding.tunnel.setOnClickListener(this::setTunnel);
mBinding.caption.setOnClickListener(this::setCaption);
mBinding.subtitle.setOnClickListener(this::onSubtitle);
mBinding.caption.setOnLongClickListener(this::onCaption);
}
@ -143,13 +139,4 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback, B
if (Setting.isCaption()) startActivity(new Intent(Settings.ACTION_CAPTIONING_SETTINGS));
return Setting.isCaption();
}
private void onSubtitle(View view) {
SubtitleDialog.create(this).show();
}
@Override
public void setSubtitle(int size) {
mBinding.subtitleText.setText(String.valueOf(size));
}
}

@ -18,7 +18,6 @@ import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.Dimension;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
@ -57,7 +56,6 @@ 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.Players;
import com.fongmi.android.tv.player.exo.ExoUtil;
@ -66,6 +64,7 @@ import com.fongmi.android.tv.ui.base.BaseActivity;
import com.fongmi.android.tv.ui.custom.CustomKeyDownVod;
import com.fongmi.android.tv.ui.custom.CustomMovement;
import com.fongmi.android.tv.ui.dialog.DescDialog;
import com.fongmi.android.tv.ui.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.dialog.TrackDialog;
import com.fongmi.android.tv.ui.presenter.ArrayPresenter;
import com.fongmi.android.tv.ui.presenter.EpisodePresenter;
@ -107,7 +106,7 @@ import java.util.regex.Matcher;
import okhttp3.Call;
import okhttp3.Response;
public class VideoActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback, SubtitleCallback {
public class VideoActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback {
private ActivityVideoBinding mBinding;
private ViewGroup.LayoutParams mFrameParams;
@ -304,8 +303,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.control.text.setOnClickListener(this::onTrack);
mBinding.control.audio.setOnClickListener(this::onTrack);
mBinding.control.video.setOnClickListener(this::onTrack);
mBinding.control.text.setUpListener(this::onTextAdd);
mBinding.control.text.setDownListener(this::onTextSub);
mBinding.control.speed.setUpListener(this::onSpeedAdd);
mBinding.control.speed.setDownListener(this::onSpeedSub);
mBinding.control.ending.setUpListener(this::onEndingAdd);
@ -381,16 +378,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
}
private void setSubtitleView() {
mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, 16);
mBinding.exo.getSubtitleView().setApplyEmbeddedFontSizes(false);
mBinding.exo.getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
mBinding.exo.getSubtitleView().setApplyEmbeddedStyles(!Setting.isCaption());
}
@Override
public void setSubtitle(int size) {
mBinding.exo.getSubtitleView().setFixedTextSize(Dimension.SP, size);
}
private void setDecode() {
mBinding.control.decode.setText(mPlayers.getDecodeText());
}
@ -662,7 +654,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
mBinding.video.setForeground(null);
mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
mBinding.flag.setSelectedPosition(getFlagPosition());
setSubtitle(Setting.getSubtitle());
mKeyDown.setFull(true);
setFullscreen(true);
mFocus2 = null;
@ -675,7 +666,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
getFocus1().requestFocus();
mKeyDown.setFull(false);
setFullscreen(false);
setSubtitle(16);
mFocus2 = null;
hideInfo();
}
@ -853,20 +843,6 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
hideControl();
}
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() {
if (isVisible(mBinding.control.getRoot())) hideControl();
else showControl(getFocus2());
@ -1040,6 +1016,11 @@ public class VideoActivity extends BaseActivity implements CustomKeyDownVod.List
item.save();
}
@Override
public void onSubtitleClick() {
App.post(() -> SubtitleDialog.create().view(mBinding.exo.getSubtitleView()).show(this), 200);
}
@Override
public void onTimeChanged() {
long position, duration;

@ -1,83 +0,0 @@
package com.fongmi.android.tv.ui.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.exo.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;
private final SubtitleCallback callback;
private final AlertDialog dialog;
private boolean listen;
private int value;
public static SubtitleDialog create(FragmentActivity activity) {
return new SubtitleDialog(activity);
}
public SubtitleDialog(FragmentActivity activity) {
this.callback = (SubtitleCallback) activity;
this.binding = DialogSubtitleBinding.inflate(LayoutInflater.from(activity));
this.dialog = new MaterialAlertDialogBuilder(activity).setView(binding.getRoot()).create();
}
public SubtitleDialog listen(boolean listen) {
this.listen = listen;
return this;
}
public void show() {
initDialog();
initView();
initEvent();
}
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(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()));
}
private void initEvent() {
binding.positive.setOnClickListener(this::onPositive);
binding.negative.setOnClickListener(this::onNegative);
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();
}
private void onNegative(View view) {
callback.setSubtitle(value);
dialog.dismiss();
}
}

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/grey_600"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,160L440,647L216,423L160,480L480,800L800,480L744,423L520,647L520,160L440,160Z" />
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/grey_600"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,520L200,520L200,440L440,440L440,200L520,200L520,440L760,440L760,520L520,520L520,760L440,760L440,520Z" />
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/grey_600"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,838Q319,823 239.5,732.5Q160,642 160,520Q160,454 186,393.5Q212,333 260,288L317,345Q279,379 259.5,424Q240,469 240,520Q240,608 296,675.5Q352,743 440,758L440,838ZM520,838L520,758Q607,742 663.5,675Q720,608 720,520Q720,420 650,350Q580,280 480,280L477,280L521,324L465,380L325,240L465,100L521,156L477,200L480,200Q614,200 707,293Q800,386 800,520Q800,641 720.5,731.5Q641,822 520,838Z" />
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/grey_600"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M200,520L200,440L760,440L760,520L200,520Z" />
</vector>

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="@color/grey_600"
android:viewportWidth="960"
android:viewportHeight="960">
<path
android:fillColor="@android:color/white"
android:pathData="M440,800L440,313L216,537L160,480L480,160L800,480L744,537L520,313L520,800L440,800Z" />
</vector>

@ -100,35 +100,6 @@
</LinearLayout>
<LinearLayout
android:id="@+id/subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/player_subtitle"
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/subtitleText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="16" />
</LinearLayout>
<LinearLayout
android:id="@+id/buffer"
android:layout_width="match_parent"

@ -1,74 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="16dp">
android:orientation="horizontal"
android:padding="8dp">
<FrameLayout
android:layout_width="match_parent"
<ImageView
android:id="@+id/large"
android:layout_width="wrap_content"
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"
android:background="?attr/selectableItemBackgroundBorderless"
android:focusable="true"
android:padding="8dp"
android:src="@drawable/ic_subtitle_large" />
<ImageView
android:id="@+id/small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:nextFocusDown="@id/positive"
android:stepSize="1"
android:valueFrom="14"
android:valueTo="48"
app:labelBehavior="gone"
app:thumbColor="@color/blue_500"
app:tickVisible="false"
app:trackColorActive="@color/blue_500"
app:trackColorInactive="@color/blue_50" />
<LinearLayout
android:layout_width="match_parent"
android:background="?attr/selectableItemBackgroundBorderless"
android:focusable="true"
android:padding="8dp"
android:src="@drawable/ic_subtitle_small" />
<ImageView
android:id="@+id/up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:orientation="horizontal">
<TextView
android:id="@+id/positive"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:layout_weight="1"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:singleLine="true"
android:text="@string/dialog_positive"
android:textColor="@color/white"
android:textSize="14sp" />
<TextView
android:id="@+id/negative"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_text"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center"
android:singleLine="true"
android:text="@string/dialog_negative"
android:textColor="@color/white"
android:textSize="14sp" />
android:background="?attr/selectableItemBackgroundBorderless"
android:focusable="true"
android:padding="8dp"
android:src="@drawable/ic_subtitle_up" />
<ImageView
android:id="@+id/down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:focusable="true"
android:padding="8dp"
android:src="@drawable/ic_subtitle_down" />
<ImageView
android:id="@+id/reset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:focusable="true"
android:padding="8dp"
android:src="@drawable/ic_subtitle_reset" />
</LinearLayout>
</LinearLayout>

@ -33,11 +33,11 @@
tools:visibility="visible" />
<ImageView
android:id="@+id/size"
android:id="@+id/subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackgroundBorderless"
android:src="@drawable/ic_action_size"
android:src="@drawable/ic_action_subtitle"
android:visibility="gone"
tools:visibility="visible" />

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

@ -1,6 +1,5 @@
package com.fongmi.android.tv.ui.dialog;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -13,7 +12,6 @@ import androidx.media3.ui.SubtitleView;
import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.databinding.DialogSubtitleBinding;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
@ -21,7 +19,6 @@ public final class SubtitleDialog extends BaseDialog {
private DialogSubtitleBinding binding;
private SubtitleView subtitleView;
private Players player;
public static SubtitleDialog create() {
return new SubtitleDialog();
@ -32,11 +29,6 @@ public final class SubtitleDialog extends BaseDialog {
return this;
}
public SubtitleDialog player(Players player) {
this.player = player;
return this;
}
public void show(FragmentActivity activity) {
for (Fragment f : activity.getSupportFragmentManager().getFragments()) if (f instanceof BottomSheetDialogFragment) return;
show(activity.getSupportFragmentManager(), null);
@ -47,11 +39,6 @@ public final class SubtitleDialog extends BaseDialog {
return binding = DialogSubtitleBinding.inflate(inflater, container, false);
}
@Override
protected void initView() {
player.pause();
}
@Override
protected void initEvent() {
binding.up.setOnClickListener(this::onUp);
@ -82,12 +69,6 @@ public final class SubtitleDialog extends BaseDialog {
subtitleView.setBottomPaddingFraction(SubtitleView.DEFAULT_BOTTOM_PADDING_FRACTION);
}
@Override
public void onDismiss(@NonNull DialogInterface dialog) {
super.onDismiss(dialog);
player.play();
}
@Override
public void onResume() {
super.onResume();

@ -688,7 +688,7 @@ public class LiveActivity extends BaseActivity implements CustomKeyDownLive.List
@Override
public void onSubtitleClick() {
App.post(() -> SubtitleDialog.create().view(mBinding.exo.getSubtitleView()).player(mPlayers).show(this), 200);
App.post(() -> SubtitleDialog.create().view(mBinding.exo.getSubtitleView()).show(this), 200);
}
@Override

@ -1030,7 +1030,7 @@ public class VideoActivity extends BaseActivity implements Clock.Callback, Custo
@Override
public void onSubtitleClick() {
App.post(() -> SubtitleDialog.create().view(mBinding.exo.getSubtitleView()).player(mPlayers).show(this), 200);
App.post(() -> SubtitleDialog.create().view(mBinding.exo.getSubtitleView()).show(this), 200);
}
@Override

Loading…
Cancel
Save