package com.hdl.photovoltaic.utils; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Build; import android.os.LocaleList; import android.text.TextUtils; import android.util.DisplayMetrics; import java.util.Locale; /** * 多语言适配 */ public class LocalManageUtil { public static final String zh = "zh";//中文 public static final String en = "en";//英文 // private static Locale mLocale; /** * 获取系统的locale * * @return Locale对象 */ public static Locale getSystemLocale(Context context) { Locale locale; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { locale = LocaleList.getDefault().get(0); } else { locale = Locale.getDefault(); } return locale; } // // public static Context setLocal(Context context) { // return updateResources(context, mLocale); // } // // public static Context updateResources(Context context, Locale locale) { // if (locale == null) { // return context; // } // LocalManageUtil.mLocale = locale; // Locale.setDefault(locale); // // Resources res = context.getResources(); // Configuration config = new Configuration(res.getConfiguration()); // config.setLocale(locale); // context = context.createConfigurationContext(config); // return context; // } /** * 应用内切换语言 * * @param language language (zh:汉语;en:英语) * @param context 上下文 */ public static void changeAppLanguage(String language, Context context) { Locale locale = getLocale(language); updateResources(locale, context); } /** * 获取系统当前语言 * * @return _ */ public static Locale getDefaultLocale() { return Resources.getSystem().getConfiguration().locale; } /** * 获取Locale * * @param language (zh:汉语;en:英语) * @return Locale */ public static Locale getLocale(String language) { try { if (TextUtils.isEmpty(language)) { return getDefaultLocale(); } return new Locale(language); } catch (Exception e) { return getDefaultLocale(); } } /** * 更新资源数据 * * @param locale 语言实体类 * @param context 上下文 * @return - */ private static void updateResources(Locale locale, Context context) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { //7.0以下系统 DisplayMetrics metrics = context.getResources().getDisplayMetrics(); Configuration configuration = context.getResources().getConfiguration(); configuration.setLocale(locale); context.getResources().updateConfiguration(configuration, metrics); // Locale.setDefault(locale); } else { //7.0及以上系统 Configuration configuration = context.getResources().getConfiguration(); configuration.setLocale(locale); configuration.setLocales(new LocaleList(locale)); context.createConfigurationContext(configuration); } } /** * 设置当前APP的语言模式 * * @param context 上下文 */ private static void setCurrLanguageMode(Context context) { String language = SharedPreUtils.getSharedPreferencesKey("languege"); Locale local = getLocale(language); Resources res = context.getResources(); DisplayMetrics dm = res.getDisplayMetrics(); Configuration conf = res.getConfiguration(); conf.locale = local; res.updateConfiguration(conf, dm); } }