首页 > 移动平台 > 详细

android 多语言包的切换

时间:2014-04-12 16:42:41      阅读:535      评论:0      收藏:0      [点我收藏+]

顾名思义,就是在软件中实现多语言的功能~

首先必须先设好不同语言的资源文件,命名规则自行百度,我给大家一个参考大家就懂啦。

bubuko.com,布布扣bubuko.com,布布扣

然后关键是代码的实现,但是我这个方法只对执行后出现的界面生效——简单来说,要对整个应用生效的话,就必须在应用开启的时候调用,或者执行动作后手动将软件重新刷新一遍(工作量挺大的。。。。)

 

那么在应用开启的时候怎么调用呢?

主要思路是,先做一个选择语言的界面(废话。。。),然后选择语言之后,将用户选择的语言保存下来(这里选择的是sharedpreference,因为方便嘛),然后在打开软件的时候在入口avtivity(例如MainActivity)的onCreate方法调用切换语言的方法。

首先是保存(因为是直接从项目里copy下来的,里面有的地方是跟项目相关的做法,大家大可不必完全仿照,根据上面提及的主要思路去写就好了)

bubuko.com,布布扣
    public void switchLanguage(Locale locale) {    
        SharedPreferences sharedPreferences=this.getSharedPreferences("com.demo", Context.MODE_PRIVATE);
        String keepLanguage=null;
        if(locale.equals(Locale.ENGLISH))
            keepLanguage="english";
        else if(locale.equals(Locale.SIMPLIFIED_CHINESE))
            keepLanguage="simplechinese";
        else if(locale.equals(Locale.TRADITIONAL_CHINESE))
            keepLanguage="traditionalchinese";
        sharedPreferences.edit().putString("locale", keepLanguage).commit();
}
bubuko.com,布布扣

然后在入口Activity里读取sharedpreference,知道用户选择的语言之后切换语言~

bubuko.com,布布扣
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        SharedPreferences sharedPreferences = this.getSharedPreferences(
                "com.demo", Context.MODE_PRIVATE);
        Resources resources = getResources();// 获得res资源对象
        Configuration config = resources.getConfiguration();// 获得设置对象
        DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
        if (sharedPreferences.getString("locale", "simplechinese").equals(
                "english"))
            config.locale = locale.ENGLISH;
        else if (sharedPreferences.getString("locale", "simplechinese").equals(
                "simplechinese"))
            config.locale = locale.SIMPLIFIED_CHINESE;
        else if (sharedPreferences.getString("locale", "simplechinese").equals(
                "traditionalchinese"))
            config.locale = locale.TRADITIONAL_CHINESE;
        resources.updateConfiguration(config, dm);
                setContentView(R.layout.layout_loading_activity);
}                
bubuko.com,布布扣

因为只会对设置之后的界面生效,所以setContentView方法该放哪里就要好好思考了哦~

android 多语言包的切换,布布扣,bubuko.com

android 多语言包的切换

原文:http://www.cnblogs.com/blairsProgrammer/p/3658261.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!