您的位置:首页 > 移动开发

Android 仿支付宝设置app语言

2016-06-23 10:43 369 查看
第一次登录,进入app语言选择界面,默认选择系统默认语言,自己可以选择其他语言,保存设置,下次进入直接应用保存设置的语言。(这里只用了英文和中文)

直接贴代码:

public class LanguageChoiceActivity extends Activity {

public static final String LANGUAGE = "language";

private CheckBox cb_ok;

private RadioButton rb_english, rb_chinese;

private String language;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

/* 隐藏标题栏 */
requestWindowFeature(Window.FEATURE_NO_TITLE);
/* 隐藏状态栏 */
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
/* 设定屏幕显示为横屏 */
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setContentView(R.layout.activity_language_choice);

//初始化控件
setViews();

//设置监听事件
setListeners();

//初始化 language 的值
setLanguage();

}

/**
* 初始化 language 的值
*/
private void setLanguage() {
SharedPreferences share = getSharedPreferences(LANGUAGE, MODE_PRIVATE);
String lan = share.getString(LANGUAGE, null);
if (lan != null) {
language = lan;
switchLanguage(language);
Intent intent = new Intent(LanguageChoiceActivity.this, LoginActivity.class);
startActivity(intent);
finish();
} else {
//获取默认语言,判断是否选中按钮
String aDefault = Locale.getDefault().toString();
String adefault2 = aDefault.substring(0, 2);
String english = Locale.ENGLISH.toString();
if (english.equals(adefault2)) {
language = "en";
rb_english.setChecked(true);
} else {
language = "zh";
rb_chinese.setChecked(true);
}
}

}

/**
* 初始化控件
*/
private void setViews() {
cb_ok = (CheckBox) findViewById(R.id.cb_ok);
rb_english = (RadioButton) findViewById(R.id.rb_english);
rb_chinese = (RadioButton) findViewById(R.id.rb_chinese);
}

/**
* 设置监听事件
*/
private void setListeners() {
cb_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switchLanguage(language);
saveLanguage();
Intent intent = new Intent(LanguageChoiceActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
});

rb_english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
language = "en";
}
});
rb_chinese.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
language = "ch";
}
});

}

/**
* 保存语言设置到
*/
private void saveLanguage() {
SharedPreferences share = getSharedPreferences(LANGUAGE, MODE_PRIVATE);
SharedPreferences.Editor editor = share.edit();
editor.putString(LANGUAGE, language);
editor.apply();
}

/**
* 改变系统语言
* 默认为中文
*
* @param language
*/
private void switchLanguage(String language) {
//设置应用语言类型
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
if (language.equals("en")) {
configuration.locale = Locale.ENGLISH;
} else {
configuration.locale = Locale.SIMPLIFIED_CHINESE;
}
resources.updateConfiguration(configuration, dm);
}

}


若想要重新设置语言,就在跳转过来的时候清除设置:

tv_back_language.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences sharedPreferences=getSharedPreferences(LanguageChoiceActivity.LANGUAGE,MODE_PRIVATE);
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString(LanguageChoiceActivity.LANGUAGE,null);
editor.apply();
Intent intent=new Intent(LoginActivity.this,LanguageChoiceActivity.class);
startActivity(intent);
finish();
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: