Androidで標準フォントのサイズを変更する
4902 ワード
システムの標準フォントのサイズを変更する必要があります。
一般的なステップは、frame eworks/core/java/android/content/res/Configration.javaファイルで関数set ToDefaultsのfontScaleの値を変更することであり、例えば、fontScale=1.18 fに変更する。その後、packages/apps/Settings/res/values/arrays.xmlで、配列entryvalues_を修正します。font.sizeの値は、デフォルトの値と同じである1.18(そうでないとデフォルトのフォントが表示されます。そしてSettings->Display->Fontsizeで設定されている場合はデフォルトのfont Scaleが設定されなくなります。最初のフォントがnormalであるのに、もう一度クリックするとフォントが変更されます)。
Display画面を表示する時、Settings/src/com/android/settings/DisplaySettings.javaという種類を実行します。onResumeの時に、関数udateStateを呼び出します。この関数の中でreadFontSizeference(mFontSizef)を呼び出します。この関数では、現在のシステムのフォントサイズを取得します。
一般的なステップは、frame eworks/core/java/android/content/res/Configration.javaファイルで関数set ToDefaultsのfontScaleの値を変更することであり、例えば、fontScale=1.18 fに変更する。その後、packages/apps/Settings/res/values/arrays.xmlで、配列entryvalues_を修正します。font.sizeの値は、デフォルトの値と同じである1.18(そうでないとデフォルトのフォントが表示されます。そしてSettings->Display->Fontsizeで設定されている場合はデフォルトのfont Scaleが設定されなくなります。最初のフォントがnormalであるのに、もう一度クリックするとフォントが変更されます)。
/**
* Set this object to the system defaults.
*/
public void setToDefaults() {
fontScale = 1;
mcc = mnc = 0;
locale = null;
userSetLocale = false;
touchscreen = TOUCHSCREEN_UNDEFINED;
keyboard = KEYBOARD_UNDEFINED;
keyboardHidden = KEYBOARDHIDDEN_UNDEFINED;
hardKeyboardHidden = HARDKEYBOARDHIDDEN_UNDEFINED;
navigation = NAVIGATION_UNDEFINED;
navigationHidden = NAVIGATIONHIDDEN_UNDEFINED;
orientation = ORIENTATION_UNDEFINED;
screenLayout = SCREENLAYOUT_UNDEFINED;
uiMode = UI_MODE_TYPE_UNDEFINED;
screenWidthDp = compatScreenWidthDp = SCREEN_WIDTH_DP_UNDEFINED;
screenHeightDp = compatScreenHeightDp = SCREEN_HEIGHT_DP_UNDEFINED;
smallestScreenWidthDp = compatSmallestScreenWidthDp = SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
densityDpi = DENSITY_DPI_UNDEFINED;
seq = 0;
simSetLocale = false; /// M: sim locale feature
}
- 0.85
- 1.0
- 1.15
- 1.30
修正中に、より良いフォントサイズと表示の対応関係が見られます。Display画面を表示する時、Settings/src/com/android/settings/DisplaySettings.javaという種類を実行します。onResumeの時に、関数udateStateを呼び出します。この関数の中でreadFontSizeference(mFontSizef)を呼び出します。この関数では、現在のシステムのフォントサイズを取得します。
public void readFontSizePreference(ListPreference pref) {
try {
Log.d("zhangmq", "readFontSizePreference ActivityManagerNative.getDefault().getConfiguration() = "
+ActivityManagerNative.getDefault().getConfiguration());
mCurConfig.updateFrom(ActivityManagerNative.getDefault().getConfiguration());
} catch (RemoteException e) {
Log.w(TAG, "Unable to retrieve font size");
}
// mark the appropriate item in the preferences list
Log.d("zhangmq", "readFontSizePreference mCurConfig.fontScale = " + mCurConfig.fontScale);
int index = floatToIndex(mCurConfig.fontScale);
Log.d("zhangmq", "readFontSizePreference index = " + index);
pref.setValueIndex(index);
// report the current size in the summary text
final Resources res = getResources();
String[] fontSizeNames = res.getStringArray(R.array.entries_font_size);
pref.setSummary(String.format(res.getString(R.string.summary_font_size),
fontSizeNames[index]));
}
本当に面白いのはfloat ToIndex方法です。int floatToIndex(float val) {
String[] indices = getResources().getStringArray(R.array.entryvalues_font_size);
float lastVal = Float.parseFloat(indices[0]);// , 0.85
Log.d("zhangmq", "floatToIndex lastVal = " + lastVal);
for (int i=1; i
overlay Settings entryvalues_font_size, Settings entryvalues_font_size , overlay 。