Android开发程序内部改变语言设置
2016-07-21 23:50
555 查看
项目中用到了多语言要求,又不能改变系统语言,对于这种奇葩的需求也是醉了,既然做了,还是总结一下,以备后看
语言配置是保存在SharedPreferences对象里面的,每次运行app首先读取配置,加载对应的资源,我的app里面有两种:中文和English
获取当前配置
选择配置
这是一段设置app内部语言为English的代码:
语言配置是保存在SharedPreferences对象里面的,每次运行app首先读取配置,加载对应的资源,我的app里面有两种:中文和English
SharedPreferencesUtil share = new SharedPreferencesUtil(this, Contants.ShareSettings.CONFIG);
获取当前配置
String language=share.getString(Contants.ShareSettings.LANGUAGE);//获取当前语言配置
选择配置
if(language.equals("zh")){ Resources resources =getResources();//获得res资源对象 Configuration config = resources.getConfiguration();//获得设置对象 DisplayMetrics dm = resources.getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。 config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文 resources.updateConfiguration(config, dm); this.finish(); startActivity(new Intent(this,MainActivity.class)); }else{ Resources resources =getResources(); Configuration config = resources.getConfiguration(); DisplayMetrics dm = resources.getDisplayMetrics(); config.locale = Locale.ENGLISH; //英文 resources.updateConfiguration(config, dm); this.finish(); startActivity(new Intent(this,MainActivity.class));//刷新当前页面,不然没有变化 }
这是一段设置app内部语言为English的代码:
cbEnglish.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { //应用内配置语言 Resources resources =context.getResources();//获得res资源对象 Configuration config = resources.getConfiguration();//获得设置对象 DisplayMetrics dm = resources.getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。 config.locale = Locale.ENGLISH; //英文 share.putString(Contants.ShareSettings.LANGUAGE, "ENGLISH");//保存选择的值 resources.updateConfiguration(config, dm); activity.finish();//结束当前activity,刷新界面,不然更改了之后没有效果的 Intent intent = new Intent(context, activity.getClass()); context.startActivity(intent); if(!currentLuanguage.equals("ENGLISH")){ NewsDao m=new NewsDao(context);//新建一个新闻实体类,调用ClearNews(context)方法清理掉数据库保存的新闻数据,重新重服务器下载 m.clearNews(context); m=null;//释放对象 // SyToast.syDefaultToast(context, "更改语言之后,App将自动重启"); // CommonUtil.restartApp(context);//重启app } chooseLanguage.dismiss(); currentLuanguage=null; } });
相关文章推荐
- Android实现表情 抓取新浪表情
- 详解Android解析Xml的三种方式——DOM、SAX以及XMLpull
- android开发环境遇到adt无法启动的问题分析及解决方法
- Android开发 旋转屏幕导致Activity重建解决方法
- Android开发技巧之在a标签或TextView控件中单击链接弹出Activity(自定义动作)
- Android开发技巧之ViewStub控件惰性装载
- Android开发常用经典代码段集锦
- 分享10个很棒的学习Android开发的网站
- android开发之横向滚动/竖向滚动的ListView(固定列头)
- Android开发技巧之我的菜单我做主(自定义菜单)
- Windows下使用Apache Cordova开发ANDROID之HelloWorld
- 根据根据图片的url怎么取得图片ImageView对象
- [转] ADB server didn't ACK
- android开发的相关链接
- Android数据存储之SharedPreferences 共享首选项/偏好设置
- 基于NDK的Android防破解
- 麦子学院android开发笔记:Android更换RatingBar图片
- android开发入门知识之AIDL详解
- AutoCompleteTextView组件的功能和用法