工具类:

import android.content.Context; import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.preference.PreferenceManager; import android.util.DisplayMetrics; import java.util.Locale; public class LanguageSettingUtil { //单例模式-    private static LanguageSettingUtil instance; private Context context; //存储当前系统的language设置-    private String defaultLanguage; //存储当前系统Locale-    private Locale defaultLocale; public final static String ENGLISH = "en"; public final static String CHINESE = "zh"; private LanguageSettingUtil(Context paramContext) { //得到系统语言-        Locale localLocale = Locale.getDefault(); this.defaultLocale = localLocale; //保存系统语言到defaultLanguage        String str = this.defaultLocale.getLanguage(); this.defaultLanguage = str; this.context = paramContext; } //检验自身是否被创建-    public static LanguageSettingUtil get() { if (instance == null) throw new IllegalStateException( "language setting not initialized yet"); return instance; } //初始化-    public static void init(Context paramContext) { if (instance == null) { instance = new LanguageSettingUtil(paramContext); } } // 创建Configuration-    private Configuration getUpdatedLocaleConfig(String paramString) { Configuration localConfiguration = context.getResources() .getConfiguration(); Locale localLocale = getLocale(paramString); localConfiguration.locale = localLocale; return localConfiguration; } //得到APP配置文件目前的语言设置-    public String getLanguage() { SharedPreferences localSharedPreferences = PreferenceManager .getDefaultSharedPreferences(this.context); //如果当前程序没有设置language属性就返回系统语言,如果有,就返回以前的-        return localSharedPreferences.getString("language", this.defaultLanguage); } //如果配置文件中没有语言设置-    public Locale getLocale() { String str = getLanguage(); return getLocale(str); } //创建新Locale并覆盖原Locale-    public Locale getLocale(String paramString) { Locale localLocale = new Locale(paramString); Locale.setDefault(localLocale); return localLocale; } //刷新显示配置-    public void refreshLanguage() { String str = getLanguage(); Resources localResources = this.context.getResources(); if (!localResources.getConfiguration().locale.getLanguage().equals(str)) { Configuration localConfiguration = getUpdatedLocaleConfig(str); // A structure describing general information about a display, such // as its size, density, and font scaling.            DisplayMetrics localDisplayMetrics = localResources .getDisplayMetrics(); localResources.updateConfiguration(localConfiguration, localDisplayMetrics); } } //设置系统语言-    public void saveLanguage(String paramString) { PreferenceManager.getDefaultSharedPreferences(this.context).edit() .putString("language", paramString).commit(); } //保存系统的语言设置到SharedPreferences-    public void saveSystemLanguage() { PreferenceManager.getDefaultSharedPreferences(this.context).edit() .putString("PreSysLanguage", this.defaultLanguage).commit(); } public void checkSysChanged(String cuerSysLanguage) { //如果系统语言设置发生变化-        if (!cuerSysLanguage.equals(PreferenceManager .getDefaultSharedPreferences(this.context).getString( "PreSysLanguage", "zh"))) { //如果系统保存了this对象,就在这里修改defaultLanguage的值为当前系统语言cuerSysLanguage            this.defaultLanguage = cuerSysLanguage; saveLanguage(cuerSysLanguage); saveSystemLanguage(); } } }

调用类:

import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.example.internationaltest.util.LanguageSettingUtil; public class MainActivity extends Activity { private LanguageSettingUtil languageSetting; private TextView h,w; private Button b; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); h = (TextView) findViewById(R.id.h); w = (TextView) findViewById(R.id.w); b = (Button) findViewById(R.id.b); LanguageSettingUtil.init(this);  // 初始化 languageSetting = LanguageSettingUtil.get();  // 检查是否已经初始化 } public void change(View view){ languageSetting.saveLanguage("en");  // 设置为"en"语言 LanguageSettingUtil.get().refreshLanguage();  // 刷新 h.setText(R.string.hello); w.setText(R.string.world); b.setText(R.string.change); } }

更多相关文章

  1. Android(安卓)使用MediaPlayer 播放 视频
  2. Android语音识别简单示例
  3. Android常用控件之RecyclerView
  4. Android(安卓)仿苹果自定义Dialog
  5. 利用广播实现ip拨号
  6. com.android.cts.devicepolicy.ManagedProfileTest -- testAppLi
  7. Android(安卓)Metrail Design
  8. Android(安卓)技术总结(016)—— 使用百度地图api获取当前位置
  9. android EditText不弹出软键盘的方法

随机推荐

  1. Android(安卓)用手势切换activity
  2. Android(安卓)用service实现视频播放器
  3. android清除缓存并获取大小
  4. Android(安卓)计算控件尺寸
  5. Android每隔一段时间就重复执行指定代码
  6. Android(安卓)获取内存信息
  7. [Linux] 批量查看Android应用程序的文件
  8. android Handler and progress
  9. Android(安卓)反射简化findViewById
  10. [Android实例] android多点触摸demo