diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
index 49ce06a9b..5e19e8173 100644
--- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java
@@ -51,6 +51,7 @@ import android.widget.Toast;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
+import com.google.android.exoplayer2.ui.SubtitleView;
import org.schabi.newpipe.R;
import org.schabi.newpipe.extractor.stream.StreamInfo;
@@ -337,8 +338,24 @@ public final class MainVideoPlayer extends Activity {
channelTextView.setSelected(true);
getRootView().setKeepScreenOn(true);
- getSubtitleView().setFixedTextSize(TypedValue.COMPLEX_UNIT_PX,
- getCaptionSizePx(context));
+ }
+
+ @Override
+ protected void setupSubtitleView(@NonNull SubtitleView view,
+ @NonNull String captionSizeKey) {
+ final float captionRatio;
+ if (captionSizeKey.equals(getString(R.string.smaller_caption_size_key))) {
+ captionRatio = 22f;
+ } else if (captionSizeKey.equals(getString(R.string.larger_caption_size_key))) {
+ captionRatio = 18f;
+ } else {
+ captionRatio = 20f;
+ }
+
+ final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
+ final int minimumLength = Math.min(metrics.heightPixels, metrics.widthPixels);
+ view.setFixedTextSize(TypedValue.COMPLEX_UNIT_PX,
+ (float) minimumLength / captionRatio);
}
@Override
@@ -768,12 +785,6 @@ public final class MainVideoPlayer extends Activity {
};
}
- private float getCaptionSizePx(@NonNull Context context) {
- final DisplayMetrics metrics = context.getResources().getDisplayMetrics();
- final int minimumLength = Math.min(metrics.heightPixels, metrics.widthPixels);
- // todo: expose size control to users
- return (float) minimumLength / 20f;
- }
///////////////////////////////////////////////////////////////////////////
// Getters
///////////////////////////////////////////////////////////////////////////
diff --git a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
index 9b5413977..bda2b7aa5 100644
--- a/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/PopupVideoPlayer.java
@@ -53,6 +53,7 @@ import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.PlaybackParameters;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
+import com.google.android.exoplayer2.ui.SubtitleView;
import org.schabi.newpipe.BuildConfig;
import org.schabi.newpipe.R;
@@ -391,6 +392,18 @@ public final class PopupVideoPlayer extends Service {
rootView.addOnLayoutChangeListener(this);
}
+ @Override
+ protected void setupSubtitleView(@NonNull SubtitleView view,
+ @NonNull String captionSizeKey) {
+ float captionRatio = SubtitleView.DEFAULT_TEXT_SIZE_FRACTION;
+ if (captionSizeKey.equals(getString(R.string.smaller_caption_size_key))) {
+ captionRatio *= 0.9;
+ } else if (captionSizeKey.equals(getString(R.string.larger_caption_size_key))) {
+ captionRatio *= 1.1;
+ }
+ view.setFractionalTextSize(captionRatio);
+ }
+
@Override
public void onLayoutChange(final View view, int left, int top, int right, int bottom,
int oldLeft, int oldTop, int oldRight, int oldBottom) {
diff --git a/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java
index 7f41c028f..a2f5d22ae 100644
--- a/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java
+++ b/app/src/main/java/org/schabi/newpipe/player/VideoPlayer.java
@@ -32,6 +32,7 @@ import android.graphics.PorterDuff;
import android.net.Uri;
import android.os.Build;
import android.os.Handler;
+import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
@@ -183,7 +184,12 @@ public abstract class VideoPlayer extends BasePlayer
this.bottomControlsRoot = rootView.findViewById(R.id.bottomControls);
this.topControlsRoot = rootView.findViewById(R.id.topControls);
this.qualityTextView = rootView.findViewById(R.id.qualityTextView);
+
this.subtitleView = rootView.findViewById(R.id.subtitleView);
+ final String captionSizeKey = PreferenceManager.getDefaultSharedPreferences(context)
+ .getString(context.getString(R.string.caption_size_key),
+ context.getString(R.string.caption_size_default));
+ setupSubtitleView(subtitleView, captionSizeKey);
this.resizeView = rootView.findViewById(R.id.resizeTextView);
resizeView.setText(PlayerHelper.resizeTypeOf(context, aspectRatioFrameLayout.getResizeMode()));
@@ -204,6 +210,9 @@ public abstract class VideoPlayer extends BasePlayer
.getIndeterminateDrawable().setColorFilter(Color.WHITE, PorterDuff.Mode.MULTIPLY);
}
+ protected abstract void setupSubtitleView(@NonNull SubtitleView view,
+ @NonNull String captionSizeKey);
+
@Override
public void initListeners() {
super.initListeners();
diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml
index 372b917e0..047f03f8b 100644
--- a/app/src/main/res/values/settings_keys.xml
+++ b/app/src/main/res/values/settings_keys.xml
@@ -100,6 +100,25 @@
- @string/black_theme_title
+
+ caption_size_key
+ @string/normal_caption_size_key
+
+ smaller_caption_size
+ normal_caption_size
+ larger_caption_size
+
+
+ - @string/smaller_caption_font_size
+ - @string/normal_caption_font_size
+ - @string/larger_caption_font_size
+
+
+ - @string/smaller_caption_size_key
+ - @string/normal_caption_size_key
+ - @string/larger_caption_size_key
+
+
show_search_suggestions
show_play_with_kodi
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b1bd5c3ec..7ceec994b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -403,4 +403,9 @@
FILL
ZOOM
+ Caption Font Size
+ Smaller Font
+ Normal Font
+ Larger Font
+
diff --git a/app/src/main/res/xml/appearance_settings.xml b/app/src/main/res/xml/appearance_settings.xml
index 58b08a284..3ffbd9d81 100644
--- a/app/src/main/res/xml/appearance_settings.xml
+++ b/app/src/main/res/xml/appearance_settings.xml
@@ -21,4 +21,12 @@
android:key="@string/show_hold_to_append_key"
android:title="@string/show_hold_to_append_title"
android:summary="@string/show_hold_to_append_summary"/>
+
+