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方法该放哪里就要好好思考了哦~

  • 相关阅读:
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 貌似化学
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    Java 蓝桥杯 算法训练 字符串的展开 (JAVA语言实现)
    JAVA-蓝桥杯-算法训练-字符串变换
    Ceph:一个开源的 Linux PB 级分布式文件系统
    shell 脚本监控程序是否正在执行, 如果没有执行, 则自动启动该进程
  • 原文地址:https://www.cnblogs.com/blairsProgrammer/p/3658261.html
Copyright © 2011-2022 走看看