zoukankan      html  css  js  c++  java
  • android 多语言包的切换

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

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

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

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

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

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

        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();
    }

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

        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);
    }                

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

  • 相关阅读:
    梦断代码阅读笔记03
    第十二周进度条
    找“水王”
    梦断代码阅读笔记02
    梦断代码阅读笔记01
    团队开发第二阶段个人博客(2)
    团队开发第二阶段个人博客(1)
    个人总结
    第16周学习进度条
    个人进度条第15周
  • 原文地址:https://www.cnblogs.com/blairsProgrammer/p/3658261.html
Copyright © 2011-2022 走看看