参考:http://wenku.baidu.com/view/80de2573a417866fb84a8efc.html
LocalePicker.java ,菜单Settings/Language & keyboard/Select lanuage/调用到这个文件:当更改语言时:会调用updateConfiguration函数 。
LatinIME.java ,就会调用onConfigurationChanged函数。
在这个函数里条件相应的代码即可:
如:
// chengfuyong@20130306 began
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
// Save the selected languages
String checkedLanguages = "";
final String language = systemLocale.substring(0, 2);
if("en_US".equals(systemLocale)) {
if (IME_DEFAULT_INPUT_LANGUAGE == null) {
checkedLanguages += "en_US,";
} else {
checkedLanguages += IME_DEFAULT_INPUT_LANGUAGE + ",en_US,";
}
} else {
checkedLanguages += "en_US," + language + ",";
}
if (checkedLanguages.length() < 1) checkedLanguages = null; // Save null
Editor editor = sp.edit();
editor.putString(LatinIME.PREF_INPUT_LANGUAGE, language);
editor.putString(LatinIME.PREF_SELECTED_LANGUAGES, checkedLanguages);
SharedPreferencesCompat.apply(editor);
// chengfuyong@20130306 end
开机会调用onCreate函数,因此也要加上:
如:
// chengfuyong@20130306 began
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
// Save the selected languages
String checkedLanguages = "";
final String language = systemLocale.substring(0, 2);
if("en_US".equals(systemLocale)) {
if (IME_DEFAULT_INPUT_LANGUAGE == null) {
checkedLanguages += "en_US,";
} else {
checkedLanguages += IME_DEFAULT_INPUT_LANGUAGE + ",en_US,";
}
} else {
checkedLanguages += "en_US," + language + ",";
}
if (checkedLanguages.length() < 1) checkedLanguages = null; // Save null
Editor editor = sp.edit();
editor.putString(LatinIME.PREF_INPUT_LANGUAGE, language);
editor.putString(LatinIME.PREF_SELECTED_LANGUAGES, checkedLanguages);
SharedPreferencesCompat.apply(editor);
// chengfuyong@20130306 end
本文介绍在Android系统中如何通过LocalePicker.java和LatinIME.java文件实现输入语言的切换配置。当用户更改设备语言设置时,系统将调用updateConfiguration和onConfigurationChanged函数来更新输入法的语言选项,并保存所选语言。
824

被折叠的 条评论
为什么被折叠?



