大家好,本篇文章主要讲的是Android国际化之中英文语言切换,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
不想废话,直接上干货
@Override
protected void attachBaseContext(Context newBase) {
Locale newLocale;
if (SPUtil.getBoolean(newBase,"isEN")) {
//设置英文
newLocale = Locale.ENGLISH;
} else {
//设置中文
newLocale = Locale.SIMPLIFIED_CHINESE;
}
Context context = MyContextWrapper.wrap(newBase, newLocale);
super.attachBaseContext(context);
}
是的,直接在你继承的BaseActivity里面重载(@Override)attachBaseContext方法即可。
里面有一个自定义的MyContextWrapper:
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import android.os.LocaleList;
import java.util.Locale;
public class MyContextWrapper extends ContextWrapper {
public MyContextWrapper(Context base) {
super(base);
}
public static ContextWrapper wrap(Context context, Locale newLocale) {
Resources res = context.getResources();
Configuration configuration = res.getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
configuration.setLocale(newLocale);
LocaleList localeList = new LocaleList(newLocale);
LocaleList.setDefault(localeList);
configuration.setLocales(localeList);
context = context.createConfigurationContext(configuration);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
configuration.setLocale(newLocale);
context = context.createConfigurationContext(configuration);
}
return new ContextWrapper(context);
}
}
关于SPUtil,就是一个简单的SharedPreferences内容存取类:
import android.content.Context;
import android.content.SharedPreferences;
public class SPUtil {
/**
* 万能的put方法 (能存储String/int/boolean类型的值)
* @param context
* @param key
* @param value
*/
public static void put(Context context, String key, Object value) {
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
SharedPreferences.Editor edit = sp.edit();
if (value instanceof String) {
edit.putString(key, (String) value);
} else if (value instanceof Integer) {
//JDK1.7之后可以把引用数据类型转为基本数据类型
edit.putInt(key, (int) value);
} else if (value instanceof Boolean) {
edit.putBoolean(key, (boolean) value);
}
edit.apply();
}
/**
* 获取String
* @param context
* @param key
* @return
*/
public static String getString(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
return sp.getString(key, "");
}
/**
* 获取int
* @param context
* @param key
* @return
*/
public static int getInt(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
return sp.getInt(key, 0);
}
/**
* 获取Boolean
* @param context
* @param key
* @return
*/
public static boolean getBoolean(Context context, String key) {
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
return sp.getBoolean(key, false);
}
/**
* 清空首选项
*
* */
public static void clearData(Context context){
SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);
sp.edit().clear().apply();
}
}
代码到这里也就结束了,下面是添加国际化语言的简单步骤:
切记修改语言之后一定要重新加载页面,不然不会立即生效
SPUtil.put(SettingActivity.this,"isEN",isChecked);
recreate();
到此这篇关于Android国际化之中英文语言切换的文章就介绍到这了,更多相关Android中英文语言切换内容请搜索编程学习网以前的文章希望大家以后多多支持编程学习网!
沃梦达教程
本文标题为:Android国际化之中英文语言切换


猜你喜欢
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14
- Android studio实现动态背景页面 2023-05-23
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- Android实现轮询的三种方式 2023-02-17
- Flutter实现底部和顶部导航栏 2022-08-31
- iOS 对当前webView进行截屏的方法 2023-03-01
- Android实现监听音量的变化 2023-03-30
- 详解flutter engine 那些没被释放的东西 2022-12-04
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02