多语言且切换功能代码详情如下:
语言包存放位置: strings.xml 这是不同的语言文件 分别新建对应的values-en|values-zh...
创建一个语言包的工具类:
/**
* 语言工具类
*/
public class LanguaueUtils {
public static int SYS_LANGUGE = 0;
/**
* 更新系统语言
* @param mContext
*/
public static void updateLanguaue(Context mContext){
Resources resources = mContext.getResources();
DisplayMetrics dm = resources.getDisplayMetrics();
Configuration config = resources.getConfiguration();
//读取配置
int languaue = SpUtils.getInstance().getInt(Constants.SP_LANGUAUE,0);
SYS_LANGUGE = languaue;
if(languaue == 0){
config.locale = Locale.SIMPLIFIED_CHINESE;
} else if(languaue == 1) {
config.locale = Locale.ENGLISH;
} else {
config.locale = Locale.SIMPLIFIED_CHINESE;
}
resources.updateConfiguration(config,dm);
}
}
初始化Dialog弹窗:
private void initLanguaueDialog() {
mLanguageDialog = DialogManager.getInstance().initView(this, R.layout.dialog_select_photo, Gravity.BOTTOM);
tv_zh = (TextView) mLanguageDialog.findViewById(R.id.tv_camera);
tv_en = (TextView) mLanguageDialog.findViewById(R.id.tv_ablum);
tv_cancel = (TextView) mLanguageDialog.findViewById(R.id.tv_cancel);
//设置文本
tv_zh.setText(R.string.text_setting_current_languaue);
tv_en.setText(R.string.text_setting_current_languaue_en);
//设置点击事件
//设置中文
tv_zh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectLanguaue(0);
DialogManager.getInstance().hide(mLanguageDialog);
}
});
//设置英文
tv_en.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectLanguaue(1);
DialogManager.getInstance().hide(mLanguageDialog);
}
});
//取消
tv_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogManager.getInstance().hide(mLanguageDialog);
}
});
}
/**
* 语言选择
* @param index 0: 中文 1: 英文
*/
private void selectLanguaue(int index) {
if(LanguaueUtils.SYS_LANGUGE == index){
return;
}
SpUtils.getInstance().putInt(Constants.SP_LANGUAUE,index);
Toast.makeText(this,"切换成功",Toast.LENGTH_SHORT).show();
//重启APP
finishAffinity();
System.exit(0);
}
点击切换语言的按钮:
DialogManager.getInstance().show(mLanguageDialog);
如下展示: