Android修改默认字体巨细(小、默认、大、最大)

打印 上一主题 下一主题

主题 968|帖子 968|积分 2904

        通常修改屏幕表现巨细会通过调整屏幕密度来实现,但这调整的是整体的巨细。客户会经常要去调整至符合巨细,必要修改字体默认巨细可参考本文的内容
需求:字体默以为小
根据packages/apps/Settings/src/com/android/settings/display/FontSizePreferenceController.java
  1. public class FontSizePreferenceController extends BasePreferenceController {
  2.     public FontSizePreferenceController(Context context, String key) {
  3.         super(context, key);
  4.     }
  5.     @Override
  6.     public int getAvailabilityStatus() {
  7.         return AVAILABLE;
  8.     }
  9.     @Override
  10.     public CharSequence getSummary() {
  11.         final float currentScale = Settings.System.getFloat(mContext.getContentResolver(),
  12.                 Settings.System.FONT_SCALE, 1.0f);
  13.         final Resources res = mContext.getResources();
  14.         final String[] entries = res.getStringArray(R.array.entries_font_size);
  15.         final String[] strEntryValues = res.getStringArray(R.array.entryvalues_font_size);
  16.         final int index = ToggleFontSizePreferenceFragment.fontSizeValueToIndex(currentScale,
  17.                 strEntryValues);
  18.         return entries[index];
  19.     }
  20. }
复制代码
可知字体巨细是由Settings.System.FONT_SCALE来控制的
根据packages\apps\Settings\src\com\android\settings\display\ToggleFontSizePreferenceFragment.java
  1. @Override
  2.     public void onCreate(@Nullable Bundle savedInstanceState) {
  3.         super.onCreate(savedInstanceState);
  4.         final Resources res = getContext().getResources();
  5.         final ContentResolver resolver = getContext().getContentResolver();
  6.         // Mark the appropriate item in the preferences list.
  7.         mEntries = res.getStringArray(R.array.entries_font_size);
  8.         final String[] strEntryValues = res.getStringArray(R.array.entryvalues_font_size);
  9.         final float currentScale =
  10.                 Settings.System.getFloat(resolver, Settings.System.FONT_SCALE, 1.0f);
  11.         mInitialIndex = fontSizeValueToIndex(currentScale, strEntryValues);
  12.         mValues = new float[strEntryValues.length];
  13.         for (int i = 0; i < strEntryValues.length; ++i) {
  14.             mValues[i] = Float.parseFloat(strEntryValues[i]);
  15.         }
  16.         getActivity().setTitle(R.string.title_font_size);
  17.     }
复制代码
可知修改的巨细应满足对应值:
packages/apps/Settings/res/values/arrays.xml
  1. <string-array name="entries_font_size">
  2.         <item msgid="6490061470416867723">Small</item>
  3.         <item msgid="3579015730662088893">Default</item>
  4.         <item msgid="1678068858001018666">Large</item>
  5.         <item msgid="490158884605093126">Largest</item>
  6.     </string-array>
  7.     <string-array name="entryvalues_font_size" translatable="false">
  8.         <item>0.85</item>
  9.         <item>1.0</item>
  10.         <item>1.15</item>
  11.         <item>1.30</item>
  12.     </string-array>
复制代码
故修改如下:
  1. --- a/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
  2. +++ b/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
  3. @@ -2272,6 +2272,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
  4.              loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,
  5.                      R.bool.def_accelerometer_rotation);
  6. +                                       
  7. +                       loadSetting(stmt, Settings.System.FONT_SCALE, 0.85f);
  8.              loadIntegerSetting(stmt, Settings.System.USER_ROTATION, R.integer.def_user_rotation);
  9. diff --git a/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java b/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
  10. old mode 100644
  11. new mode 100755
  12. index 440bb67..6fd6c72
  13. --- a/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
  14. +++ b/alps-mp-t0/vendor/mediatek/proprietary/packages/apps/SettingsProvider/src/com/android/providers/settings/SettingsHelper.java
  15. @@ -360,7 +360,7 @@ public class SettingsHelper {
  16.                          mContext.getContentResolver(), name, defaultScale);
  17.                  return Math.abs(currentScale - defaultScale) >= FLOAT_TOLERANCE;
  18.              case Settings.System.FONT_SCALE:
  19. -                return Settings.System.getFloat(mContext.getContentResolver(), name, 1.0f) != 1.0f;
  20. +                return Settings.System.getFloat(mContext.getContentResolver(), name,  0.85f) != 0.85f;
  21.              default:
  22.                  return false;
  23.          }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表