切换系统语言主要考虑太消耗系统资源,
如更改配置,清除资源,重新启动并加载资源,包括所有app资源,还有动画等。。。所以消耗比较大,不建议对系统进行切换
1:待测试
publicclassMainActivityextendsActivity{SharedPreferences mPrefs1;@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);
mPrefs1 =PreferenceManager.getDefaultSharedPreferences(this);String languageToLoad = mPrefs1.getString("languagePref",Locale.getDefault().getLanguage());Locale locale =newLocale(languageToLoad);Locale.setDefault(locale);Configuration config =newConfiguration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
setContentView(R.layout.activity_main);}@Overridepublicvoid onConfigurationChanged(Configuration newConfig){super.onConfigurationChanged(newConfig);
mPrefs1 =PreferenceManager.getDefaultSharedPreferences(this);String languageToLoad = mPrefs1.getString("languagePref",Locale.getDefault().getLanguage());Locale locale =newLocale(languageToLoad);Locale.setDefault(locale);Configuration config =newConfiguration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,getBaseContext().getResources().getDisplayMetrics());
setContentView(R.layout.activity_main);}// Declaring the Menu options@Overridepublicboolean onCreateOptionsMenu(Menu menu){MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);returntrue;}//handle menu item selectionpublicboolean onOptionsItemSelected(MenuItem item){switch(item.getItemId()){case R.id.menu_switch_language:String languageToLoad = getResources().getString(R.string.switch_language);
mPrefs1 =PreferenceManager.getDefaultSharedPreferences(this);SharedPreferences.Editor editor = mPrefs1.edit();
editor.putString("languagePref", languageToLoad);
editor.commit();// Very important to save the preference
finish();
startActivity(getIntent());returntrue;default:returnsuper.onOptionsItemSelected(item);}}
url:http://stackoverflow.com/questions/2324418/android-forced-locale-resetted-on-orientation-changes
2:
import android.app.Activity;
import android.content.res.Configuration;
import android.os.Bundle;
public class Main extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String languageToLoad = "cn";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
this.setContentView(R.layout.main);
}
}