From a0c7b28b912efa07c13f032eebb6579be51859db Mon Sep 17 00:00:00 2001 From: Helium314 Date: Wed, 6 Mar 2024 20:55:47 +0100 Subject: [PATCH] use TypedValueCompat for dp <-> px conversion --- .../java/helium314/keyboard/keyboard/PointerTracker.java | 3 ++- .../keyboard/latin/settings/AppearanceSettingsFragment.kt | 5 +++-- .../keyboard/latin/settings/LanguageSettingsDialog.kt | 2 +- .../helium314/keyboard/latin/settings/SettingsValues.java | 3 ++- .../helium314/keyboard/latin/setup/SetupWizardActivity.java | 6 ++---- .../helium314/keyboard/latin/utils/CustomLayoutUtils.kt | 2 +- .../java/helium314/keyboard/latin/utils/PopupKeysUtils.kt | 2 +- .../java/helium314/keyboard/latin/utils/ResourceUtils.java | 6 ++++++ 8 files changed, 18 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/helium314/keyboard/keyboard/PointerTracker.java b/app/src/main/java/helium314/keyboard/keyboard/PointerTracker.java index 4857adcd..98279a6b 100644 --- a/app/src/main/java/helium314/keyboard/keyboard/PointerTracker.java +++ b/app/src/main/java/helium314/keyboard/keyboard/PointerTracker.java @@ -19,6 +19,7 @@ import android.view.inputmethod.InputMethodSubtype; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.util.TypedValueCompat; import helium314.keyboard.keyboard.internal.BatchInputArbiter; import helium314.keyboard.keyboard.internal.BatchInputArbiter.BatchInputArbiterListener; @@ -84,7 +85,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element, // Parameters for pointer handling. private static PointerTrackerParams sParams; - private static final int sPointerStep = (int)(10.0 * Resources.getSystem().getDisplayMetrics().density); + private static final int sPointerStep = (int)TypedValueCompat.dpToPx(10, Resources.getSystem().getDisplayMetrics()); private static GestureStrokeRecognitionParams sGestureStrokeRecognitionParams; private static GestureStrokeDrawingParams sGestureStrokeDrawingParams; private static boolean sNeedsPhantomSuddenMoveEventHack; 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 1e8ef22e..f066847d 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/AppearanceSettingsFragment.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/AppearanceSettingsFragment.kt @@ -6,6 +6,7 @@ import android.content.SharedPreferences import android.content.res.Configuration import android.os.Build import android.os.Bundle +import androidx.core.util.TypedValueCompat import androidx.preference.ListPreference import androidx.preference.Preference import androidx.preference.TwoStatePreference @@ -80,8 +81,8 @@ class AppearanceSettingsFragment : SubScreenFragment() { } } val metrics = requireContext().resources.displayMetrics - val widthDp = metrics.widthPixels / metrics.density - val heightDp = metrics.heightPixels / metrics.density + val widthDp = TypedValueCompat.pxToDp(metrics.widthPixels.toFloat(), metrics) + val heightDp = TypedValueCompat.pxToDp(metrics.heightPixels.toFloat(), metrics) if ((min(widthDp, heightDp) < 600 && max(widthDp, heightDp) < 720)) { removePreference(Settings.PREF_ENABLE_SPLIT_KEYBOARD) removePreference(Settings.PREF_SPLIT_SPACER_SCALE) diff --git a/app/src/main/java/helium314/keyboard/latin/settings/LanguageSettingsDialog.kt b/app/src/main/java/helium314/keyboard/latin/settings/LanguageSettingsDialog.kt index 6bf45af4..b0a31756 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/LanguageSettingsDialog.kt +++ b/app/src/main/java/helium314/keyboard/latin/settings/LanguageSettingsDialog.kt @@ -326,7 +326,7 @@ class LanguageSettingsDialog( val attrs = context.obtainStyledAttributes(R.style.PreferenceSubtitleText, intArrayOf(android.R.attr.textSize)) setTextSize(TypedValue.COMPLEX_UNIT_PX, attrs.getDimension(0, 20f)) attrs.recycle() - setPadding((context.resources.displayMetrics.scaledDensity * 16).toInt(), 0, 0, 0) + setPadding(ResourceUtils.toPx(16, context.resources), 0, 0, 0) isEnabled = userDicts.none { it.name == "${DictionaryInfoUtils.MAIN_DICT_PREFIX}${USER_DICTIONARY_SUFFIX}" } }) } 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 17df0d7e..e328204d 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/SettingsValues.java @@ -15,6 +15,7 @@ import android.view.inputmethod.InputMethodSubtype; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.core.util.TypedValueCompat; import helium314.keyboard.compat.ConfigurationCompatKt; import helium314.keyboard.keyboard.internal.keyboard_parser.LocaleKeyboardInfosKt; @@ -167,7 +168,7 @@ public class SettingsValues { mBigramPredictionEnabled = readBigramPredictionEnabled(prefs, res); mDoubleSpacePeriodTimeout = res.getInteger(R.integer.config_double_space_period_timeout); mHasHardwareKeyboard = Settings.readHasHardwareKeyboard(res.getConfiguration()); - final float displayWidthDp = res.getDisplayMetrics().widthPixels / res.getDisplayMetrics().density; + final float displayWidthDp = TypedValueCompat.pxToDp(res.getDisplayMetrics().widthPixels, res.getDisplayMetrics()); mIsSplitKeyboardEnabled = prefs.getBoolean(Settings.PREF_ENABLE_SPLIT_KEYBOARD, false) && displayWidthDp > 600; // require display width of 600 dp for split // determine spacerWidth from display width and scale setting mSplitKeyboardSpacerRelativeWidth = mIsSplitKeyboardEnabled diff --git a/app/src/main/java/helium314/keyboard/latin/setup/SetupWizardActivity.java b/app/src/main/java/helium314/keyboard/latin/setup/SetupWizardActivity.java index 73351d41..6bab8993 100644 --- a/app/src/main/java/helium314/keyboard/latin/setup/SetupWizardActivity.java +++ b/app/src/main/java/helium314/keyboard/latin/setup/SetupWizardActivity.java @@ -6,8 +6,6 @@ package helium314.keyboard.latin.setup; -import static android.util.TypedValue.COMPLEX_UNIT_DIP; - import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Resources; @@ -15,7 +13,6 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Message; import android.provider.Settings; -import android.util.TypedValue; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.TextView; @@ -33,6 +30,7 @@ import helium314.keyboard.latin.settings.SettingsActivity; import helium314.keyboard.latin.utils.ActivityThemeUtils; import helium314.keyboard.latin.utils.JniUtils; import helium314.keyboard.latin.utils.LeakGuardHandlerWrapper; +import helium314.keyboard.latin.utils.ResourceUtils; import helium314.keyboard.latin.utils.UncachedInputMethodManagerUtils; import java.util.ArrayList; @@ -387,7 +385,7 @@ public final class SetupWizardActivity extends AppCompatActivity implements View final int paddingEnd = mActionLabel.getPaddingEnd(); mActionLabel.setPaddingRelative(paddingEnd, 0, paddingEnd, 0); } else { - final int size = (int) TypedValue.applyDimension(COMPLEX_UNIT_DIP, 24f, res.getDisplayMetrics()); + final int size = ResourceUtils.toPx(24, res); actionIconDrawable.setBounds(0,0, size, size); mActionLabel.setCompoundDrawablesRelative(actionIconDrawable, null, null, null); } diff --git a/app/src/main/java/helium314/keyboard/latin/utils/CustomLayoutUtils.kt b/app/src/main/java/helium314/keyboard/latin/utils/CustomLayoutUtils.kt index cfa86310..994a8e85 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/CustomLayoutUtils.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/CustomLayoutUtils.kt @@ -58,7 +58,7 @@ fun loadCustomLayout(layoutContent: String, layoutName: String, languageTag: Str .setView(EditText(context).apply { setText(name) doAfterTextChanged { name = it.toString() } - val padding = (8 * context.resources.displayMetrics.density).toInt() + val padding = ResourceUtils.toPx(8, context.resources) setPadding(3 * padding, padding, 3 * padding, padding) inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_NORMAL }) diff --git a/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt b/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt index 123d4c3d..208f32de 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/PopupKeysUtils.kt @@ -117,7 +117,7 @@ fun reorderPopupKeysDialog(context: Context, key: String, defaultSetting: String both.first() to both.last().toBoolean() } val rv = RecyclerView(context) - val padding = (8 * context.resources.displayMetrics.density).toInt() + val padding = ResourceUtils.toPx(8, context.resources) rv.setPadding(3 * padding, padding, padding, padding) rv.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) val callback = object : DiffUtil.ItemCallback>() { diff --git a/app/src/main/java/helium314/keyboard/latin/utils/ResourceUtils.java b/app/src/main/java/helium314/keyboard/latin/utils/ResourceUtils.java index 5e19459f..56473660 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/ResourceUtils.java +++ b/app/src/main/java/helium314/keyboard/latin/utils/ResourceUtils.java @@ -14,6 +14,8 @@ import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.TypedValue; +import androidx.core.util.TypedValueCompat; + import helium314.keyboard.latin.R; import helium314.keyboard.latin.settings.SettingsValues; @@ -259,4 +261,8 @@ public final class ResourceUtils { public static boolean isNight(final Resources res) { return (res.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES; } + + public static int toPx(final int dp, final Resources res) { + return (int) TypedValueCompat.dpToPx(dp, res.getDisplayMetrics()); + } }