package com.example.languagetest;
import java.util.Locale;
import android.app.Application;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.util.DisplayMetrics;
import android.util.Log;
public class MyApplication extends Application{
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
languageSet();
Log.e(MyApplication.class.getSimpleName(), "onCreate+===========================");
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
Log.e(MyApplication.class.getSimpleName(), "onConfigurationChanged+===========================");
languageSet();
}
private void languageSet()
{
String language = this.getResources().getString(R.string.language_set);
if("en".equals(language))
{
/*
* 国际化
*/
Resources resources = getResources();//获得res资源对象
Configuration confiObj = resources.getConfiguration();//获得设置对象yeshi
DisplayMetrics dm = resources .getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。
confiObj.locale = Locale.ENGLISH; //简体中文
resources.updateConfiguration(confiObj, dm);
Log.e("EN", confiObj.locale+"");
}else if("cn".equals(language))
{
Resources resources = getResources();//获得res资源对象
Configuration confiObj = resources.getConfiguration();//获得设置对象
DisplayMetrics dm = resources .getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。
confiObj.locale = Locale.SIMPLIFIED_CHINESE; //简体中文
resources.updateConfiguration(confiObj, dm);
Log.e("EN", confiObj.locale+"");
}
}
}
项目中,做pad功能的时候,国际化部分英文,部分中文,查了好久 才知道是横竖屏切换导致的,正确的做法是在自己的Application里重写onConfigurationChanged方法并重置语言设置,就可以解决,代码如上。