From 105a6a7791fe41d577bf9ea5326a1082d5454aa1 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Sun, 26 Jan 2025 09:27:48 +0100 Subject: [PATCH] add font scale setting (separat for emoji view, because here it feels different) fixes #1149 --- .../helium314/keyboard/keyboard/KeyboardView.java | 10 +++++++--- .../keyboard/keyboard/MainKeyboardView.java | 3 ++- .../keyboard/keyboard/internal/KeyPreviewView.java | 4 ++-- .../latin/settings/AppearanceSettingsFragment.kt | 2 ++ .../helium314/keyboard/latin/settings/Settings.java | 2 ++ .../keyboard/latin/settings/SettingsValues.java | 4 ++++ app/src/main/res/values/strings.xml | 4 ++++ app/src/main/res/xml/prefs_screen_appearance.xml | 12 ++++++++++++ 8 files changed, 35 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java b/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java index 5e39d1665..d374dac6d 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java +++ b/app/src/main/java/helium314/keyboard/keyboard/KeyboardView.java @@ -65,6 +65,7 @@ public class KeyboardView extends View { private static final float KET_TEXT_SHADOW_RADIUS_DISABLED = -1.0f; private final Colors mColors; private float mKeyScaleForText; + protected float mFontSizeMultiplier; // The maximum key label width in the proportion to the key width. private static final float MAX_LABEL_RATIO = 0.90f; @@ -189,6 +190,9 @@ public class KeyboardView extends View { mKeyDrawParams.updateParams(scaledKeyHeight, keyboard.mKeyVisualAttributes); invalidateAllKeys(); requestLayout(); + mFontSizeMultiplier = mKeyboard.mId.isEmojiKeyboard() + ? Settings.getInstance().getCurrent().mFontSizeMultiplierEmoji + : Settings.getInstance().getCurrent().mFontSizeMultiplier; } /** @@ -384,7 +388,7 @@ public class KeyboardView extends View { final String label = key.getLabel(); if (label != null) { paint.setTypeface(mTypeface == null ? key.selectTypeface(params) : mTypeface); - paint.setTextSize(key.selectTextSize(params)); + paint.setTextSize(key.selectTextSize(params) * mFontSizeMultiplier); final float labelCharHeight = TypefaceUtils.getReferenceCharHeight(paint); final float labelCharWidth = TypefaceUtils.getReferenceCharWidth(paint); @@ -446,7 +450,7 @@ public class KeyboardView extends View { // Draw hint label. final String hintLabel = key.getHintLabel(); if (hintLabel != null && mShowsHints) { - paint.setTextSize(key.selectHintTextSize(params)); + paint.setTextSize(key.selectHintTextSize(params) * mFontSizeMultiplier); // maybe take sqrt to not have such extreme changes? paint.setColor(key.selectHintTextColor(params)); // TODO: Should add a way to specify type face for hint letters paint.setTypeface(Typeface.DEFAULT_BOLD); @@ -561,7 +565,7 @@ public class KeyboardView extends View { } else { paint.setColor(key.selectTextColor(mKeyDrawParams)); paint.setTypeface(key.selectTypeface(mKeyDrawParams)); - paint.setTextSize(key.selectTextSize(mKeyDrawParams)); + paint.setTextSize(key.selectTextSize(mKeyDrawParams) * mFontSizeMultiplier); } return paint; } diff --git a/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java b/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java index c004822b3..fddc64d57 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java +++ b/app/src/main/java/helium314/keyboard/keyboard/MainKeyboardView.java @@ -164,7 +164,8 @@ public final class MainKeyboardView extends KeyboardView implements DrawingProxy mBackgroundDimAlphaPaint.setColor(Color.BLACK); mBackgroundDimAlphaPaint.setAlpha(backgroundDimAlpha); mLanguageOnSpacebarTextRatio = mainKeyboardViewAttr.getFraction( - R.styleable.MainKeyboardView_languageOnSpacebarTextRatio, 1, 1, 1.0f); + R.styleable.MainKeyboardView_languageOnSpacebarTextRatio, 1, 1, 1.0f) + * Settings.getInstance().getCurrent().mFontSizeMultiplier; final Colors colors = Settings.getInstance().getCurrent().mColors; mLanguageOnSpacebarTextColor = colors.get(ColorType.SPACE_BAR_TEXT); mLanguageOnSpacebarTextShadowRadius = mainKeyboardViewAttr.getFloat( diff --git a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyPreviewView.java b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyPreviewView.java index f1d75986d..94ad2cc5c 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/internal/KeyPreviewView.java +++ b/app/src/main/java/helium314/keyboard/keyboard/internal/KeyPreviewView.java @@ -57,8 +57,8 @@ public class KeyPreviewView extends AppCompatTextView { setCompoundDrawables(null, null, null, null); setTextColor(drawParams.mPreviewTextColor); - setTextSize(TypedValue.COMPLEX_UNIT_PX, key.selectPreviewTextSize(drawParams)); - // wie hier machen? + setTextSize(TypedValue.COMPLEX_UNIT_PX, key.selectPreviewTextSize(drawParams) + * Settings.getInstance().getCurrent().mFontSizeMultiplier); setTypeface(mTypeface == null ? key.selectPreviewTypeface(drawParams) : mTypeface); // TODO Should take care of temporaryShiftLabel here. setTextAndScaleX(key.getPreviewLabel()); diff --git a/app/src/main/java/helium314/keyboard/latin/settings/AppearanceSettingsFragment.kt b/app/src/main/java/helium314/keyboard/latin/settings/AppearanceSettingsFragment.kt index fa9614f31..aa990648d 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/AppearanceSettingsFragment.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/AppearanceSettingsFragment.kt @@ -106,6 +106,8 @@ class AppearanceSettingsFragment : SubScreenFragment() { setupScalePrefs(Settings.PREF_KEYBOARD_HEIGHT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE) setupScalePrefs(Settings.PREF_BOTTOM_PADDING_SCALE, SettingsValues.DEFAULT_SIZE_SCALE) setupScalePrefs(Settings.PREF_BOTTOM_PADDING_SCALE_LANDSCAPE, 0f) + setupScalePrefs(Settings.PREF_FONT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE) + setupScalePrefs(Settings.PREF_EMOJI_FONT_SCALE, SettingsValues.DEFAULT_SIZE_SCALE) if (splitScalePref != null) { setupScalePrefs(Settings.PREF_SPLIT_SPACER_SCALE, SettingsValues.DEFAULT_SIZE_SCALE) splitScalePref?.isVisible = splitPref?.isChecked == true diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 8f67ddc11..0db33ad1f 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -113,6 +113,8 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang public static final String PREF_KEYBOARD_HEIGHT_SCALE = "keyboard_height_scale"; public static final String PREF_BOTTOM_PADDING_SCALE = "bottom_padding_scale"; public static final String PREF_BOTTOM_PADDING_SCALE_LANDSCAPE = "bottom_padding_scale_landscape"; + public static final String PREF_FONT_SCALE = "font_scale"; + public static final String PREF_EMOJI_FONT_SCALE = "emoji_font_scale"; public static final String PREF_SPACE_HORIZONTAL_SWIPE = "horizontal_space_swipe"; public static final String PREF_SPACE_VERTICAL_SWIPE = "vertical_space_swipe"; public static final String PREF_DELETE_SWIPE = "delete_swipe"; diff --git a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java index 0a312633b..c89761655 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -120,6 +120,8 @@ public class SettingsValues { public final boolean mAlphaAfterSymbolAndSpace; public final boolean mRemoveRedundantPopups; public final String mSpaceBarText; + public final float mFontSizeMultiplier; + public final float mFontSizeMultiplierEmoji; // From the input box @NonNull @@ -273,6 +275,8 @@ public class SettingsValues { mRemoveRedundantPopups = prefs.getBoolean(Settings.PREF_REMOVE_REDUNDANT_POPUPS, false); mSpaceBarText = prefs.getString(Settings.PREF_SPACE_BAR_TEXT, ""); mEmojiMaxSdk = prefs.getInt(Settings.PREF_EMOJI_MAX_SDK, Build.VERSION.SDK_INT); + mFontSizeMultiplier = prefs.getFloat(Settings.PREF_FONT_SCALE, DEFAULT_SIZE_SCALE); + mFontSizeMultiplierEmoji = prefs.getFloat(Settings.PREF_EMOJI_FONT_SCALE, DEFAULT_SIZE_SCALE); } public boolean isApplicationSpecifiedCompletionsOn() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a5c94bdf1..43b0a3514 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -313,6 +313,10 @@ Bottom padding scale Bottom padding scale (landscape) + + Keyboard font scale + + Emoji view font scale Custom text on space bar diff --git a/app/src/main/res/xml/prefs_screen_appearance.xml b/app/src/main/res/xml/prefs_screen_appearance.xml index 1590619cf..d30b97aee 100644 --- a/app/src/main/res/xml/prefs_screen_appearance.xml +++ b/app/src/main/res/xml/prefs_screen_appearance.xml @@ -130,6 +130,18 @@ android:defaultValue="" android:persistent="true" /> + + + +