顾名思义,就是在软件中实现多语言的功能~
首先必须先设好不同语言的资源文件,命名规则自行百度,我给大家一个参考大家就懂啦。
然后关键是代码的实现,但是我这个方法只对执行后出现的界面生效——简单来说,要对整个应用生效的话,就必须在应用开启的时候调用,或者执行动作后手动将软件重新刷新一遍(工作量挺大的。。。。)
那么在应用开启的时候怎么调用呢?
主要思路是,先做一个选择语言的界面(废话。。。),然后选择语言之后,将用户选择的语言保存下来(这里选择的是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方法该放哪里就要好好思考了哦~