android多语言国际化
来源:互联网 发布:网络阅读媒介有哪些 编辑:程序博客网 时间:2024/06/02 03:18
在很多app中都涉及到中英文切换 繁体简体切换,再此简单的记录一下
1,首先大家要清楚,默认情况下,Android会根据系统的语言地区设置,自动选择对应的资源。也就是说会首先尝试语言地区全匹配,如果没有权匹配的资源包,则会尝试匹配语言,最后则会取默认的。比如如果Android系统的语言地区是中文简体,则首先会尝试从/values-zh-rCN中获取资源,如果没有此文件夹或者文件夹中没有响应的资源,则会尝试/values-zh,都获取不到的情况下即从/values中获取。
(/values是必须存在的,否则不能通过编译)
2,在命名values文件时是有要求的,下面是地区的命名连接:点击打开链接 ,接下来就是在不同的values中鲁相关语言的string代码
3,书写相关代码,效果图
public class MainActivity extends AppCompatActivity { ImageButton btn_settings; AlertDialog dialog; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //读取SharedPreferences数据,初始化语言设置 setLanguage(); getSupportActionBar().hide(); setContentView(R.layout.activity_main); btn_settings = (ImageButton) findViewById(R.id.btn_settings); //点击设置按钮进入语言设置 btn_settings.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { //创建单选框 final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setSingleChoiceItems(new String[]{"Auto", "简体中文"}, getSharedPreferences("language", Context.MODE_PRIVATE).getInt("language",0), new DialogInterface.OnClickListener() { //点击单选框某一项以后 public void onClick(DialogInterface dialogInterface, int i) { //将选中项存入SharedPreferences,以便重启应用后读取设置 SharedPreferences preferences = getSharedPreferences("language", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putInt("language",i); editor.apply();
setLanguage();dialog.dismiss(); Intent intent = new Intent(MainActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); /* 重新在新的任务栈开启新应用 Intent intent = new Intent(MainActivity.this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); android.os.Process.killProcess(android.os.Process.myPid()); */ } }); dialog = builder.create(); dialog.show(); } }); }/*重要的代码其实就是这里*/ private void setLanguage() { //读取SharedPreferences数据,默认选中第一项 SharedPreferences preferences = getSharedPreferences("language", Context.MODE_PRIVATE); int language = preferences.getInt("language", 0); //根据读取到的数据,进行设置 Resources resources = getResources();//获得资源对象 DisplayMetrics displayMetrics = resources.getDisplayMetrics(); //获取手机屏幕参数 Configuration configuration = resources.getConfiguration(); //Configuration类是专门用来描述手机设备上的配置信息。
这些配置信息包括用户特定的配置项,也包括系统的动态设备配置。 switch (language){ case 0: configuration.setLocale(Locale.getDefault());//设置为手机系统默认的语言 break; case 1: configuration.setLocale( Locale.CHINESE); //设置为英文,系统会检测values_en的资源文件,如果没有会执行values中的文件 break; default: break; } resources.updateConfiguration(configuration,displayMetrics);//更新修改后的资源配置 }
阅读全文
2 0
- android 多语言国际化
- android多语言国际化
- android多语言与国际化
- Android多语言与国际化
- android多语言与国际化
- Android多语言与国际化
- android多语言与国际化
- android多语言与国际化
- android多语言与国际化
- android多语言与国际化
- android国际化(多语言)
- 【android】多语言与国际化
- android国际化(多语言)
- android国际化(多语言)
- android国际化(多语言)
- Android 国际化(多语言)
- android国际化(多语言)
- android国际化(多语言)
- 畅通工程||HDU1863
- 使用CRF++进行命名实体识别
- Linux环境下通过rpm安装gcc的顺序
- JUnit单元测试
- 寻找范围内”合数“
- android多语言国际化
- 详述快捷支付产品功能及设计要点
- 1、为什么caffe训练时训练集loss=0.06,验证集accuracy=0.98但测试集的准确率很低accuracy=0.67
- CodeForces 455A
- 解决界面失去焦点,点击button按钮,无法触发点击事件
- A
- makedown 使用方法
- RecyclerView的item高度占了整个屏幕高度的问题
- Ajax跨域问题解决