1 .在工程res文件下添加对应语种的values文件,ar:阿拉伯语, en:英语 zh_rCN: 简体中文
创新互联服务项目包括淄川网站建设、淄川网站制作、淄川网页制作以及淄川网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,淄川网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到淄川省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
截图如下:
2 .在功能清单文件中对要进行切换acitivity 进行配置添加
android:configChanges="locale"
3 .对语言选择的处理
public class MainActivity extends Activity {
Context context = MainActivity.this;;
int languageId;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
read();//设置
setContentView(R.layout.main);
findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
save();
}
});
}
//保存
private void save() {
String[] languages = { "默认", "CN", "EN" };
AlertDialog.Builder builder = new AlertDialog.Builder(context,
android.R.style.Animation_Dialog);
builder.setTitle("选择语言");
final SharedPreferences languagePre = context.getSharedPreferences(
"language_choice", context.MODE_PRIVATE);
final int id = languagePre.getInt("id", 0);
builder.setSingleChoiceItems(languages, id,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int index) {
switch (index) {
case 0:
// 系统默认语言
languageId = 0;
break;
case 1:
// 简体中文
languageId = 1;
break;
case 2:
// 英语
languageId = 2;
break;
case 3:
// 阿拉伯语
languageId = 3;
break;
default:
break;
}
languagePre.edit().putInt("id", languageId).commit();
}
});
// 保存
builder.setPositiveButton("保存", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((Activity) context).finish();
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
context.startActivity(intent);
}
});
builder.show();
}
//读取
private void read() {
SharedPreferences languagePre = getSharedPreferences("language_choice",
Context.MODE_PRIVATE);
int id = languagePre.getInt("id", 0);
Log.d("MainActivity", "langauge_id=" + id);
Toast.makeText(context, "langauge_id=" + id, Toast.LENGTH_LONG).show();
// 应用内配置语言
Resources resources = getResources();// 获得res资源对象
Configuration config = resources.getConfiguration();// 获得设置对象
DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
switch (id) {
case 0:
config.locale = Locale.getDefault(); // 系统默认语言
break;
case 1:
config.locale = Locale.SIMPLIFIED_CHINESE; // 简体中文
break;
case 2:
config.locale = Locale.ENGLISH; // 英文
break;
default:
config.locale = Locale.getDefault();
break;
}
resources.updateConfiguration(config, dm);
}
}
在android 2.0的平台上,如果你使用了强制语言转换,你会看到屏幕在不断的闪烁。因为这个Activity在不断的执行onCreate();在Logcat上你 也会看到如下错误:"something wrong here, didn't expect * to be resumed android". 解决办法是: 在manifest 中添加android:configChanges=”locale”这个属性。 [xml]activity android:name=”.Main” android:configChanges=”locale” android:label=”@string/app_name” /[/xml]低于2.0的sdk没有这个问题。
android在选择不同的语言之后会调用IActivityManager的实例updateConfiguration,同时将Configuration对象中的Locale值改变。具体的不是很清楚,但是在改变语言以后所有的Activity都会被kill掉,然后在重新调用Activity的onCreate方法,这个你可以自己调试代码
以MIUI系统为例,来说明一下切换系统语言步骤:
1、打开手机设置应用页面,选择“系统高级设置”选项。
2、系统高级设置页面中选择“语言和输入法”选项。
3、选择"语言"设置选项。
4、选择需要的语言即可。