赞
踩
参考网址:
(1)、http://blog.csdn.net/liyuchong2537631/article/details/48292385
(2)、http://www.jb51.net/article/90326.htm
1、多语言的实现:是指同一个应用界面能支持多种语言的显示,供不同语言的人使用。也就是我们应用内显示的字符串都要有不同语言的多个备份。
首先最重要一点是不能把要显示的字符串写死在代码里,而是应该写到对应的配置文件中,也就是res目录下的strings.xml中。
2、根据需求为每种要支持的语言创建一份对应的strings.xml。
(1)新建文件夹
(2)选择locale,并选择要支持的语言和地区。(我选择的是繁体字,所以选择台湾)
(3)形成一份新的values-zh-rTW strings.xml
这样,应用中显示的每一个字符串在上述方法得到的各个strings.xml文件中都需要有一个备份(当然,语言的内容要更改为对应语言)。
3、代码的实现:
(1)设置语言界面:(Setting.class)
先判断手机系统用的是什么语言
- if (sharedPreferencesUtil.getLanguage().equals("CN")) {
-
- tv_simple_language.setTextColor(getResources().getColor(R.color.e50011));//简体选中
- tv_tw_language.setTextColor(getResources().getColor(R.color.A333333));//繁体未选中
-
- } else if (sharedPreferencesUtil.getLanguage().equals("TW")) {
-
- tv_simple_language.setTextColor(getResources().getColor(R.color.A333333));//简体未选中
- tv_tw_language.setTextColor(getResources().getColor(R.color.e50011));//繁体选中
-
- } else if (sharedPreferencesUtil.getLanguage().equals("0")) {//sharedPreferencesUtil.getLanguage()初始化为 0 (获取系统的语言)
- if (getResources().getConfiguration().locale.getCountry().equals("CN")) {//判断当前手机系统的语言
-
- tv_simple_language.setTextColor(getResources().getColor(R.color.e50011));//简体选中
- tv_tw_language.setTextColor(getResources().getColor(R.color.A333333));//繁体未选中
- sharedPreferencesUtil.setLanguage("CN");//简体
-
- } else if (getResources().getConfiguration().locale.getCountry().equals("TW")) {
-
- tv_simple_language.setTextColor(getResources().getColor(R.color.A333333));//简体未选中
- tv_tw_language.setTextColor(getResources().getColor(R.color.e50011));//繁体选中
- sharedPreferencesUtil.setLanguage("TW");//繁体
-
- }
- }
- Resources resources = getResources();
- Configuration configuration = resources.getConfiguration(); // 获取资源配置
- DisplayMetrics metrics = resources.getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。
- tv_simple_language.setTextColor(getResources().getColor(R.color.e50011));
- tv_tw_language.setTextColor(getResources().getColor(R.color.A333333));
- sharedPreferencesUtil.setLanguage("CN");//简体
-
-
- configuration.locale = Locale.CHINA; // 设置当前语言配置为简体
- resources.updateConfiguration(configuration, metrics); // 更新配置文件
- sendBroadcast(new Intent("language")); // 发送广播,广播接受后重新开启此Activtiy以重新初始化界面语言.
- finish(); Resources resources = getResources();
- Configuration configuration = resources.getConfiguration(); // 获取资源配置
- DisplayMetrics metrics = resources.getDisplayMetrics();
- tv_simple_language.setTextColor(getResources().getColor(R.color.A333333));
- tv_tw_language.setTextColor(getResources().getColor(R.color.e50011));
- sharedPreferencesUtil.setLanguage("TW");//繁体
-
- configuration.locale = Locale.TAIWAN; // 设置当前语言配置为繁体
- resources.updateConfiguration(configuration, metrics); // 更新配置文件
- sendBroadcast(new Intent("language")); // 发送广播,广播接受后重新开启此Activtiy以重新初始化界面语言.
- /**
- * Created by hong on 2016/10/26.
- *
- * 自定义广播类 语言改变后重启Activity
- *
- */
- public class ChangeReceiver extends BroadcastReceiver {
- private Intent mIntent;
-
- @Override
- public void onReceive(Context context, Intent intent) {
- mIntent = new Intent(context, MainActivity.class);
- mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//关闭所有的activity,返回首页
- mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- context.startActivity(mIntent);
- }
- }
-
- Configuration config = getResources().getConfiguration();
- DisplayMetrics dm = getResources().getDisplayMetrics();
- if (sharedPreferencesUtil.getLanguage().equals("CN")) {
- config.locale = Locale.CHINA; // 设置当前语言配置为简体
- getResources().updateConfiguration(config, dm); // 更新配置文件
- } else if (sharedPreferencesUtil.getLanguage().equals("TW")) {
- config.locale = Locale.TAIWAN; // 设置当前语言配置为繁体
- getResources().updateConfiguration(config, dm); // 更新配置文件
- }
有问题请多指教,谢谢~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。