首先看一下效果图:

项目结构图:

Android 3.0以下版本的做法:

importjava.util.Locale;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.content.Context;
importandroid.content.DialogInterface;
importandroid.content.Intent;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
importandroid.content.res.Configuration;
importandroid.content.res.Resources;
importandroid.os.Bundle;
importandroid.os.Handler;
importandroid.os.Message;
importandroid.view.View;
importandroid.widget.AdapterView;
importandroid.widget.AdapterView.OnItemSelectedListener;
importandroid.widget.ArrayAdapter;
importandroid.widget.Button;
importandroid.widget.Spinner;

public classHelloMyL10NActivity extendsActivity{
privateSharedPreferencespreferences;

@Override
public voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
// if(savedInstanceState==null){
// savedInstanceState=getIntent().getBundleExtra("Instance");
// if(savedInstanceState!=null){
// onRestoreInstanceState(savedInstanceState);
// }
// }
preferences=getSharedPreferences("lang",Context.MODE_PRIVATE);
StringlangString=preferences.getString("lang","en");
setLanguage(langString);
setContentView(R.layout.main);

Buttonb;
(b=(Button)findViewById(R.id.flag_button)).setBackgroundDrawable( this.getResources().getDrawable(R.drawable.flag));

// 语言选择
finalStringlang[]= newString[]{"en","fr","de","ja"};
Stringitems[]= newString[]{"英文","法文","德文","日文"};
Spinnerspinner=(Spinner)findViewById(R.id.chooseLang);
spinner.setAdapter( newArrayAdapter<String>( this,android.R.layout.simple_spinner_item,items));
if(preferences.getInt("lang",0)!=0){
spinner.setSelection(savedInstanceState.getInt("position"), true);
}
spinner.setOnItemSelectedListener( newOnItemSelectedListener(){

@Override
public voidonItemSelected(AdapterView<?>parent,Viewview,
intposition, longid){
if(!(preferences.getString("lang","en").equals(lang[position]))){
setLanguage(lang[position]);
Editoreditor=preferences.edit();
editor.putString("lang",lang[position]).commit();

Intentintent= newIntent(HelloMyL10NActivity. this,HelloMyL10NActivity. this.getClass());
startActivity(intent);
finish();
}

}

@Override
public voidonNothingSelected(AdapterView<?>parent){
// TODOAuto-generatedmethodstub
}
});
}


private voidsetLanguage(StringlangString){

Resourcesresources=getResources();
Configurationconfig=resources.getConfiguration();
Localelocale= newLocale(langString);
Locale.setDefault(locale);
config.locale=locale; // 简体中文
resources.updateConfiguration(config, null);
}

}


这种方法来到Android 4.0就行不通,文字的效果还是有国际化但是图片就没有了国际化的效果。

推荐一个博客http://blog.csdn.net/a_colt/article/details/6193857 ,看一下它里面说的这个问题你有没有存在

“但同时发现了个问题

如果是用 button 的事件来触发

对于同一activity 中已生成的 目录按钮 不起作用,但对于触发前还没生成的对话框却起作用,是不是在触发后需要刷新下以生成的目录菜单呢?

最后上传一个国际化转化的工具类,用的时候需要以下配置:/Files/lee0oo0/LanguageSettingUtil.rar

LanguageSettingUtil.init(getActivity()); languageSetting = LanguageSettingUtil.get(); //拿到当前系统语言设置 final String curSysLanguage = Locale.getDefault().getLanguage();

languageSetting.checkSysChanged(curSysLanguage);

// 设置更换的语言

languageSetting.saveLanguage("zh");

// 更新

languageSetting.refreshLanguage();

更多相关文章

  1. Android(安卓)4.0 gallery2 生成video thumbnail的过程
  2. 生成Google Map KeyGen
  3. Android搜索建议(搜索联想)
  4. android中生成和使用jar 分享
  5. 生成Google Map KeyGen
  6. android的返回键弹出dialog
  7. Android硬件服务访问流程
  8. Android(安卓)NDK HelloJNI
  9. Android生成APK文件

随机推荐

  1. Unable to resolve target 'android-5'
  2. 通过JS或PHP检测Android
  3. 【Android开发】Toolbar与标题居中
  4. Android开发实现拖动效果
  5. [AndroidTips]Android预定义样式
  6. Android之WebView教程实例汇总
  7. Ubuntu编译Android整个系统以及编译指定
  8. Unable to resolve target 'android-5'
  9. Android(安卓)Studio com.android.suppor
  10. Android(安卓)Dialog的使用