diff options
-rw-r--r-- | res/values/arrays.xml | 20 | ||||
-rw-r--r-- | res/values/strings.xml | 6 | ||||
-rw-r--r-- | res/xml/display_settings.xml | 9 | ||||
-rw-r--r-- | src/com/android/settings/DisplaySettings.java | 44 |
4 files changed, 79 insertions, 0 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 6194719..4233f6d 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -137,6 +137,26 @@ <item>1800000</item> </string-array> + <string-array name="entries_font_size"> + <item>Extremely Small</item> + <item>Extra Small</item> + <item>Small</item> + <item>Normal</item> + <item>Large</item> + <item>Extra Large</item> + <item>Extremely Large</item> + </string-array> + + <string-array name="entryvalues_font_size"> + <item>0.70</item> + <item>0.85</item> + <item>0.95</item> + <item>1.0</item> + <item>1.05</item> + <item>1.15</item> + <item>1.30</item> + </string-array> + <!-- TTS settings --> <!-- Default speech rate choices --> diff --git a/res/values/strings.xml b/res/values/strings.xml index a261e9f..b508280 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1442,6 +1442,12 @@ <string name="screen_timeout_summary">Screen turns off automatically after <xliff:g id="timeout_description">%1$s</xliff:g></string> <!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions --> <string name="automatic_brightness">Automatic brightness</string> + <!-- [CHAR LIMIT=30] Sound & display settings screen, setting option name to change font size --> + <string name="title_font_size">Font size</string> + <!-- [CHAR LIMIT=40] Sound & display settings screen, setting option summary to change font size --> + <string name="summary_font_size">Overall size of fonts</string> + <!-- [CHAR LIMIT=40] Sound & display settings screen, title of dialog for picking font size --> + <string name="dialog_title_font_size">Select font size</string> <!-- SIM lock settings title --> <string name="sim_lock_settings">SIM card lock settings</string> diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 7fe7f76..5e2d76e 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -41,4 +41,13 @@ android:persistent="false" android:entries="@array/screen_timeout_entries" android:entryValues="@array/screen_timeout_values" /> + + <ListPreference + android:key="font_size" + android:title="@string/title_font_size" + android:summary="@string/summary_font_size" + android:entries="@array/entries_font_size" + android:entryValues="@array/entryvalues_font_size" + android:dialogTitle="@string/dialog_title_font_size" /> + </PreferenceScreen> diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java index cdb0147..6cf2b16 100644 --- a/src/com/android/settings/DisplaySettings.java +++ b/src/com/android/settings/DisplaySettings.java @@ -18,9 +18,11 @@ package com.android.settings; import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT; +import android.app.ActivityManagerNative; import android.app.admin.DevicePolicyManager; import android.content.ContentResolver; import android.content.Context; +import android.content.res.Configuration; import android.database.ContentObserver; import android.os.Bundle; import android.os.Handler; @@ -46,11 +48,15 @@ public class DisplaySettings extends SettingsPreferenceFragment implements private static final String KEY_SCREEN_TIMEOUT = "screen_timeout"; private static final String KEY_ANIMATIONS = "animations"; private static final String KEY_ACCELEROMETER = "accelerometer"; + private static final String KEY_FONT_SIZE = "font_size"; private ListPreference mAnimations; private CheckBoxPreference mAccelerometer; private float[] mAnimationScales; + private ListPreference mFontSizePref; + private final Configuration mCurConfig = new Configuration(); + private IWindowManager mWindowManager; private ListPreference mScreenTimeoutPreference; @@ -82,6 +88,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements mScreenTimeoutPreference.setOnPreferenceChangeListener(this); disableUnusableTimeouts(mScreenTimeoutPreference); updateTimeoutPreferenceDescription(resolver, currentTimeout); + + mFontSizePref = (ListPreference) findPreference(KEY_FONT_SIZE); + mFontSizePref.setOnPreferenceChangeListener(this); } private void updateTimeoutPreferenceDescription(ContentResolver resolver, long currentTimeout) { @@ -135,6 +144,29 @@ public class DisplaySettings extends SettingsPreferenceFragment implements screenTimeoutPreference.setEnabled(revisedEntries.size() > 0); } + int floatToIndex(float val, int resid) { + String[] indices = getResources().getStringArray(resid); + float lastVal = Float.parseFloat(indices[0]); + for (int i=1; i<indices.length; i++) { + float thisVal = Float.parseFloat(indices[i]); + if (val < (lastVal + (thisVal-lastVal)*.5f)) { + return i-1; + } + lastVal = thisVal; + } + return indices.length-1; + } + + public void readFontSizePreference(ListPreference pref) { + try { + mCurConfig.updateFrom( + ActivityManagerNative.getDefault().getConfiguration()); + } catch (RemoteException e) { + } + pref.setValueIndex(floatToIndex(mCurConfig.fontScale, + R.array.entryvalues_font_size)); + } + @Override public void onResume() { super.onResume(); @@ -179,6 +211,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements mAnimations.setValueIndex(idx); updateAnimationsSummary(mAnimations.getValue()); updateAccelerometerRotationCheckbox(); + readFontSizePreference(mFontSizePref); } private void updateAccelerometerRotationCheckbox() { @@ -200,6 +233,14 @@ public class DisplaySettings extends SettingsPreferenceFragment implements } } + public void writeFontSizePreference(Object objValue) { + try { + mCurConfig.fontScale = Float.parseFloat(objValue.toString()); + ActivityManagerNative.getDefault().updateConfiguration(mCurConfig); + } catch (RemoteException e) { + } + } + @Override public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { if (preference == mAccelerometer) { @@ -241,6 +282,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements Log.e(TAG, "could not persist screen timeout setting", e); } } + if (KEY_FONT_SIZE.equals(key)) { + writeFontSizePreference(objValue); + } return true; } |