Reads back inset scale value from config.xml instead of hardcoded values

Bug: 152364314
Test: Manual
Change-Id: Ie8de080a26bda3b63c6a5ee726e7adce2d3859f7
This commit is contained in:
Mehdi Alizadeh
2020-05-12 18:23:25 -07:00
parent f78e7f5976
commit a5eb615038

View File

@@ -18,6 +18,8 @@ package com.android.settings.gestures;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Context; import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings; import android.provider.Settings;
import android.view.WindowManager; import android.view.WindowManager;
@@ -45,8 +47,7 @@ public class GestureNavigationSettingsFragment extends DashboardFragment {
private WindowManager mWindowManager; private WindowManager mWindowManager;
private BackGestureIndicatorView mIndicatorView; private BackGestureIndicatorView mIndicatorView;
private static final float[] BACK_GESTURE_INSET_SCALES = {0.75f, 1.0f, 1.33f, 1.66f}; private float[] mBackGestureInsetScales;
private float mDefaultBackGestureInset; private float mDefaultBackGestureInset;
public GestureNavigationSettingsFragment() { public GestureNavigationSettingsFragment() {
@@ -59,15 +60,18 @@ public class GestureNavigationSettingsFragment extends DashboardFragment {
mIndicatorView = new BackGestureIndicatorView(getActivity()); mIndicatorView = new BackGestureIndicatorView(getActivity());
mWindowManager = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE); mWindowManager = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE);
mDefaultBackGestureInset = getActivity().getResources().getDimensionPixelSize(
com.android.internal.R.dimen.config_backGestureInset);
} }
@Override @Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
super.onCreatePreferences(savedInstanceState, rootKey); super.onCreatePreferences(savedInstanceState, rootKey);
final Resources res = getActivity().getResources();
mDefaultBackGestureInset = res.getDimensionPixelSize(
com.android.internal.R.dimen.config_backGestureInset);
mBackGestureInsetScales = getFloatArray(res.obtainTypedArray(
com.android.internal.R.array.config_backGestureInsetScales));
initSeekBarPreference(LEFT_EDGE_SEEKBAR_KEY); initSeekBarPreference(LEFT_EDGE_SEEKBAR_KEY);
initSeekBarPreference(RIGHT_EDGE_SEEKBAR_KEY); initSeekBarPreference(RIGHT_EDGE_SEEKBAR_KEY);
} }
@@ -121,8 +125,8 @@ public class GestureNavigationSettingsFragment extends DashboardFragment {
// Find the closest value to initScale // Find the closest value to initScale
float minDistance = Float.MAX_VALUE; float minDistance = Float.MAX_VALUE;
int minDistanceIndex = -1; int minDistanceIndex = -1;
for (int i = 0; i < BACK_GESTURE_INSET_SCALES.length; i++) { for (int i = 0; i < mBackGestureInsetScales.length; i++) {
float d = Math.abs(BACK_GESTURE_INSET_SCALES[i] - initScale); float d = Math.abs(mBackGestureInsetScales[i] - initScale);
if (d < minDistance) { if (d < minDistance) {
minDistance = d; minDistance = d;
minDistanceIndex = i; minDistanceIndex = i;
@@ -131,19 +135,29 @@ public class GestureNavigationSettingsFragment extends DashboardFragment {
pref.setProgress(minDistanceIndex); pref.setProgress(minDistanceIndex);
pref.setOnPreferenceChangeListener((p, v) -> { pref.setOnPreferenceChangeListener((p, v) -> {
final int width = (int) (mDefaultBackGestureInset * BACK_GESTURE_INSET_SCALES[(int) v]); final int width = (int) (mDefaultBackGestureInset * mBackGestureInsetScales[(int) v]);
mIndicatorView.setIndicatorWidth(width, key == LEFT_EDGE_SEEKBAR_KEY); mIndicatorView.setIndicatorWidth(width, key == LEFT_EDGE_SEEKBAR_KEY);
return true; return true;
}); });
pref.setOnPreferenceChangeStopListener((p, v) -> { pref.setOnPreferenceChangeStopListener((p, v) -> {
mIndicatorView.setIndicatorWidth(0, key == LEFT_EDGE_SEEKBAR_KEY); mIndicatorView.setIndicatorWidth(0, key == LEFT_EDGE_SEEKBAR_KEY);
final float scale = BACK_GESTURE_INSET_SCALES[(int) v]; final float scale = mBackGestureInsetScales[(int) v];
Settings.Secure.putFloat(getContext().getContentResolver(), settingsKey, scale); Settings.Secure.putFloat(getContext().getContentResolver(), settingsKey, scale);
return true; return true;
}); });
} }
private static float[] getFloatArray(TypedArray array) {
int length = array.length();
float[] floatArray = new float[length];
for (int i = 0; i < length; i++) {
floatArray[i] = array.getFloat(i, 1.0f);
}
array.recycle();
return floatArray;
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.gesture_navigation_settings) { new BaseSearchIndexProvider(R.xml.gesture_navigation_settings) {