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 c9b7bb4d2..7c0bf1275 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
@@ -8,13 +8,13 @@ import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.text.Html;
import android.text.TextUtils;
-import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
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;
@@ -51,6 +51,7 @@ 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;
@@ -59,6 +60,7 @@ 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;
@@ -94,7 +96,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 {
+public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Listener, TrackDialog.Listener, ArrayPresenter.OnClickListener, Clock.Callback, SubtitleCallback {
private ViewGroup.LayoutParams mFrameParams;
private EpisodePresenter mEpisodePresenter;
@@ -296,6 +298,7 @@ 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());
@@ -353,10 +356,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
}
private void setVideoView() {
- mPlayers.set(getExo(), getIjk());
- getExo().getSubtitleView().setUserDefaultTextSize();
getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
- getIjk().getSubtitleView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
+ getIjk().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
+ mPlayers.set(getExo(), getIjk());
+ setSubtitle(16);
}
private void setScale(int scale) {
@@ -567,9 +570,9 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private void enterFullscreen() {
mBinding.video.setForeground(null);
- getIjk().getSubtitleView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 24);
mBinding.video.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));
mBinding.flag.setSelectedPosition(getCurrentFlag());
+ setSubtitle(Setting.getSubtitle());
mKeyDown.setFull(true);
setFullscreen(true);
onPlay();
@@ -577,10 +580,10 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
private void exitFullscreen() {
mBinding.video.setForeground(ResUtil.getDrawable(R.drawable.selector_video));
- getIjk().getSubtitleView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
mBinding.video.setLayoutParams(mFrameParams);
mKeyDown.setFull(false);
setFullscreen(false);
+ setSubtitle(16);
hideInfo();
}
@@ -754,6 +757,12 @@ public class DetailActivity extends BaseActivity implements CustomKeyDownVod.Lis
hideControl();
}
+ private boolean onTextLong() {
+ SubtitleDialog.create(this).show();
+ hideControl();
+ return true;
+ }
+
private void onToggle() {
if (isVisible(mBinding.control.getRoot())) hideControl();
else showControl(mBinding.control.next);
@@ -1305,6 +1314,12 @@ 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/activity/LiveActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
index 72df953c7..60522b1af 100644
--- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/LiveActivity.java
@@ -3,10 +3,10 @@ package com.fongmi.android.tv.ui.activity;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
-import android.util.TypedValue;
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;
@@ -36,6 +36,7 @@ import com.fongmi.android.tv.event.PlayerEvent;
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.ExoUtil;
import com.fongmi.android.tv.player.Players;
@@ -45,6 +46,7 @@ import com.fongmi.android.tv.ui.custom.CustomKeyDownLive;
import com.fongmi.android.tv.ui.custom.CustomLiveListView;
import com.fongmi.android.tv.ui.custom.dialog.LiveDialog;
import com.fongmi.android.tv.ui.custom.dialog.PassDialog;
+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.ChannelPresenter;
import com.fongmi.android.tv.ui.presenter.GroupPresenter;
@@ -70,7 +72,7 @@ import okhttp3.Call;
import okhttp3.Response;
import tv.danmaku.ijk.media.player.ui.IjkVideoView;
-public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, Biometric.Callback, PassCallback, LiveCallback {
+public class LiveActivity extends BaseActivity implements GroupPresenter.OnClickListener, ChannelPresenter.OnClickListener, CustomKeyDownLive.Listener, CustomLiveListView.Callback, TrackDialog.Listener, Biometric.Callback, PassCallback, LiveCallback, SubtitleCallback {
private ActivityLiveBinding mBinding;
private ArrayObjectAdapter mChannelAdapter;
@@ -165,6 +167,7 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
mBinding.control.change.setOnClickListener(view -> onChange());
mBinding.control.player.setOnClickListener(view -> onPlayer());
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() {
@@ -196,15 +199,15 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
private void setVideoView() {
mPlayers.set(getExo(), getIjk());
setScale(Setting.getLiveScale());
- getExo().getSubtitleView().setUserDefaultTextSize();
- getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
- getIjk().getSubtitleView().setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
+ setSubtitle(Setting.getSubtitle());
mBinding.control.speed.setText(mPlayers.getSpeedText());
mBinding.control.invert.setActivated(Setting.isInvert());
mBinding.control.across.setActivated(Setting.isAcross());
mBinding.control.change.setActivated(Setting.isChange());
mBinding.control.home.setVisibility(LiveConfig.isOnly() ? View.GONE : View.VISIBLE);
findViewById(R.id.timeBar).setNextFocusUpId(R.id.player);
+ getExo().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
+ getIjk().getSubtitleView().setStyle(ExoUtil.getCaptionStyle());
}
private void setScale(int scale) {
@@ -280,6 +283,12 @@ 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();
@@ -799,6 +808,12 @@ public class LiveActivity extends BaseActivity implements GroupPresenter.OnClick
else onMenu();
}
+ @Override
+ public void setSubtitle(int size) {
+ getExo().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ getIjk().getSubtitleView().setFixedTextSize(Dimension.SP, size);
+ }
+
@Override
protected void onResume() {
super.onResume();
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 b020735bd..3834083de 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
@@ -9,14 +9,16 @@ import androidx.viewbinding.ViewBinding;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.databinding.ActivitySettingPlayerBinding;
+import com.fongmi.android.tv.impl.SubtitleCallback;
import com.fongmi.android.tv.impl.UaCallback;
import com.fongmi.android.tv.player.ExoUtil;
import com.fongmi.android.tv.player.Players;
import com.fongmi.android.tv.ui.base.BaseActivity;
+import com.fongmi.android.tv.ui.custom.dialog.SubtitleDialog;
import com.fongmi.android.tv.ui.custom.dialog.UaDialog;
import com.fongmi.android.tv.utils.ResUtil;
-public class SettingPlayerActivity extends BaseActivity implements UaCallback {
+public class SettingPlayerActivity extends BaseActivity implements UaCallback, SubtitleCallback {
private ActivitySettingPlayerBinding mBinding;
private String[] http;
@@ -39,6 +41,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback {
protected void initView() {
mBinding.uaText.setText(Setting.getUa());
mBinding.tunnelText.setText(getSwitch(Setting.isTunnel()));
+ mBinding.subtitleText.setText(String.valueOf(Setting.getSubtitle()));
mBinding.http.setVisibility(Players.isExo(Setting.getPlayer()) ? View.VISIBLE : View.GONE);
mBinding.tunnel.setVisibility(Players.isExo(Setting.getPlayer()) ? View.VISIBLE : View.GONE);
mBinding.flagText.setText((flag = ResUtil.getStringArray(R.array.select_flag))[Setting.getFlag()]);
@@ -51,6 +54,7 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback {
mBinding.http.setOnClickListener(this::setHttp);
mBinding.flag.setOnClickListener(this::setFlag);
mBinding.tunnel.setOnClickListener(this::setTunnel);
+ mBinding.subtitle.setOnClickListener(this::onSubtitle);
}
private void onUa(View view) {
@@ -75,9 +79,18 @@ public class SettingPlayerActivity extends BaseActivity implements UaCallback {
mBinding.tunnelText.setText(getSwitch(Setting.isTunnel()));
}
+ private void onSubtitle(View view) {
+ SubtitleDialog.create(this).show();
+ }
+
@Override
public void setUa(String ua) {
mBinding.uaText.setText(ua);
Setting.putUa(ua);
}
+
+ @Override
+ public void setSubtitle(int size) {
+ mBinding.subtitleText.setText(String.valueOf(size));
+ }
}
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
new file mode 100644
index 000000000..a3cef6f9b
--- /dev/null
+++ b/app/src/leanback/java/com/fongmi/android/tv/ui/custom/dialog/SubtitleDialog.java
@@ -0,0 +1,62 @@
+package com.fongmi.android.tv.ui.custom.dialog;
+
+import android.view.LayoutInflater;
+import android.view.View;
+
+import androidx.appcompat.app.AlertDialog;
+import androidx.fragment.app.FragmentActivity;
+
+import com.fongmi.android.tv.Setting;
+import com.fongmi.android.tv.databinding.DialogSubtitleBinding;
+import com.fongmi.android.tv.impl.SubtitleCallback;
+import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+
+public class SubtitleDialog {
+
+ private final DialogSubtitleBinding binding;
+ private final SubtitleCallback callback;
+ private final AlertDialog dialog;
+ 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 void show() {
+ initDialog();
+ initView();
+ initEvent();
+ }
+
+ private void initDialog() {
+ dialog.getWindow().setDimAmount(0);
+ dialog.show();
+ }
+
+ private void initView() {
+ binding.slider.setValue(value = Setting.getSubtitle());
+ }
+
+ private void initEvent() {
+ binding.positive.setOnClickListener(this::onPositive);
+ binding.negative.setOnClickListener(this::onNegative);
+ binding.slider.addOnChangeListener((slider, value, fromUser) -> callback.setSubtitle((int) 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();
+ }
+}
diff --git a/app/src/leanback/res/layout/activity_setting_player.xml b/app/src/leanback/res/layout/activity_setting_player.xml
index fb617da21..073fb419d 100644
--- a/app/src/leanback/res/layout/activity_setting_player.xml
+++ b/app/src/leanback/res/layout/activity_setting_player.xml
@@ -74,6 +74,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/fongmi/android/tv/Setting.java b/app/src/main/java/com/fongmi/android/tv/Setting.java
index 49a4e9897..294d5b690 100644
--- a/app/src/main/java/com/fongmi/android/tv/Setting.java
+++ b/app/src/main/java/com/fongmi/android/tv/Setting.java
@@ -174,6 +174,14 @@ public class Setting {
Prefers.put("ua", ua);
}
+ public static int getSubtitle() {
+ return Prefers.getInt("subtitle", 16);
+ }
+
+ public static void putSubtitle(int subtitle) {
+ Prefers.put("subtitle", subtitle);
+ }
+
public static boolean isTunnel() {
return Prefers.getBoolean("exo_tunnel");
}
diff --git a/app/src/main/java/com/fongmi/android/tv/impl/SubtitleCallback.java b/app/src/main/java/com/fongmi/android/tv/impl/SubtitleCallback.java
new file mode 100644
index 000000000..468eb0dfe
--- /dev/null
+++ b/app/src/main/java/com/fongmi/android/tv/impl/SubtitleCallback.java
@@ -0,0 +1,6 @@
+package com.fongmi.android.tv.impl;
+
+public interface SubtitleCallback {
+
+ void setSubtitle(int size);
+}
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 2adc309c5..35b0d6f89 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -68,6 +68,7 @@
User-Agent
连线方式
隧道模式
+ 字幕大小
线路播放
解码方式
渲染方式
diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml
index b00ed1315..208f055e8 100644
--- a/app/src/main/res/values-zh-rTW/strings.xml
+++ b/app/src/main/res/values-zh-rTW/strings.xml
@@ -68,6 +68,7 @@
User-Agent
連線方式
隧道模式
+ 字幕大小
線路播放
解碼方式
渲染方式
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 9d4e76f09..848fe11e1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -68,6 +68,7 @@
User-Agent
HTTP method
Tunnel mode
+ Subtitle size
Flag play
Decode
Render
diff --git a/ijkplayer/build.gradle b/ijkplayer/build.gradle
index a5804c4e4..13e5fe1cf 100644
--- a/ijkplayer/build.gradle
+++ b/ijkplayer/build.gradle
@@ -13,4 +13,6 @@ android {
dependencies {
implementation 'androidx.annotation:annotation:' + annotationVersion
+ implementation project(':media-lib-common')
+ implementation project(':media-lib-ui')
}
\ No newline at end of file
diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java
index b4f05bc6c..ef5141102 100644
--- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java
+++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/IjkVideoView.java
@@ -16,6 +16,7 @@ import android.widget.MediaController;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.media3.ui.SubtitleView;
import java.util.List;
import java.util.Map;
@@ -228,7 +229,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
private void reset() {
removeRenderView();
- mSubtitleView.setText("");
+ mSubtitleView.setCues(null);
mTargetState = STATE_IDLE;
mCurrentState = STATE_IDLE;
mCurrentBufferPosition = 0;
@@ -365,7 +366,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
ITrackInfo trackInfo = trackInfos.get(index);
if (trackInfo.getTrackType() != type) continue;
if (index == track && selected != track) {
- mSubtitleView.setText("");
+ mSubtitleView.setCues(null);
mPlayer.selectTrack(index);
updateForCurrentTrackSelections();
if (text && position > 0) seekTo(position);
@@ -380,7 +381,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
ITrackInfo trackInfo = trackInfos.get(index);
if (trackInfo.getTrackType() != type) continue;
if (index == track && selected == track) {
- mSubtitleView.setText("");
+ mSubtitleView.setCues(null);
mPlayer.deselectTrack(track);
updateForCurrentTrackSelections();
}
@@ -511,7 +512,7 @@ public class IjkVideoView extends FrameLayout implements MediaController.MediaPl
@Override
public void onTimedText(IMediaPlayer mp, IjkTimedText text) {
- mSubtitleView.onSubtitleChanged(text.getText());
+ mSubtitleView.setCues(SubtitleParser.parse(text.getText()));
}
@Override
diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/SubtitleView.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/SubtitleView.java
deleted file mode 100644
index 7af52f9e7..000000000
--- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/SubtitleView.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package tv.danmaku.ijk.media.player.ui;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.text.Html;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-import android.widget.TextView;
-
-import androidx.annotation.Nullable;
-
-public class SubtitleView extends TextView {
-
- private final float strokeWidth;
- private boolean isDrawing;
-
- public SubtitleView(Context context) {
- this(context, null);
- }
-
- public SubtitleView(Context context, @Nullable AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public SubtitleView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- strokeWidth = Util.dp2px(getContext(), 0.8f);
- }
-
- public void onSubtitleChanged(String text) {
- if (TextUtils.isEmpty(text)) {
- setText("");
- } else {
- setText(Html.fromHtml(text.replaceAll("\r\n", "
").replaceAll("\r", "
").replaceAll("\n", "
").replaceAll("\\{\\\\.*?\\}", "")));
- }
- }
-
- @Override
- public void invalidate() {
- if (isDrawing) return;
- super.invalidate();
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- isDrawing = true;
- Paint paint = getPaint();
- paint.setStyle(Paint.Style.FILL);
- setTextColor(Color.WHITE);
- super.onDraw(canvas);
- paint.setStyle(Paint.Style.STROKE);
- paint.setStrokeJoin(Paint.Join.ROUND);
- paint.setStrokeWidth(strokeWidth);
- setTextColor(Color.BLACK);
- super.onDraw(canvas);
- paint.setStyle(Paint.Style.FILL);
- setTextColor(Color.WHITE);
- isDrawing = false;
- }
-}
diff --git a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Util.java b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Util.java
index 1fe3a6df2..c9f12cf10 100644
--- a/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Util.java
+++ b/ijkplayer/src/main/java/tv/danmaku/ijk/media/player/ui/Util.java
@@ -2,12 +2,17 @@ package tv.danmaku.ijk.media.player.ui;
import android.content.Context;
import android.util.DisplayMetrics;
+import android.util.TypedValue;
public class Util {
public static final String USER_AGENT = "User-Agent";
- public static float dp2px(Context context, float dpValue) {
- return (dpValue * context.getResources().getDisplayMetrics().densityDpi) / DisplayMetrics.DENSITY_DEFAULT;
+ public static float dp2px(Context context, float dp) {
+ return (dp * context.getResources().getDisplayMetrics().densityDpi) / DisplayMetrics.DENSITY_DEFAULT;
+ }
+
+ public static float sp2px(Context context, float sp) {
+ return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, context.getResources().getDisplayMetrics());
}
}
diff --git a/ijkplayer/src/main/res/layout/ijk_player_view.xml b/ijkplayer/src/main/res/layout/ijk_player_view.xml
index 991d3b96b..11fd9a03d 100644
--- a/ijkplayer/src/main/res/layout/ijk_player_view.xml
+++ b/ijkplayer/src/main/res/layout/ijk_player_view.xml
@@ -15,14 +15,11 @@
android:scaleType="fitCenter"
android:visibility="gone" />
-
-
+
+
+