android应用内怎么设置语言切换

如题所述

1 .在工程res文件下添加对应语种的values文件,ar:阿拉伯语, en:英语    zh_rCN: 简体中文
       截图如下:

 2 .在功能清单文件中对要进行切换acitivity 进行配置添加

   android:configChanges="locale"

3 .对语言选择的处理 

public class MainActivity extends Activity {

   Context context = MainActivity.this;;
   int languageId;

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       read();//设置
       setContentView(R.layout.main);

       findViewById(R.id.btn_change).setOnClickListener(new OnClickListener() {
           @Override
           public void onClick(View v) {
               save();
           }
       });
   }

//保存
   private void save() {
       String[] languages = { "默认", "CN", "EN" };
       AlertDialog.Builder builder = new AlertDialog.Builder(context,
               android.R.style.Animation_Dialog);
       builder.setTitle("选择语言");
       final SharedPreferences languagePre = context.getSharedPreferences(
               "language_choice", context.MODE_PRIVATE);
       final int id = languagePre.getInt("id", 0);
       builder.setSingleChoiceItems(languages, id,
               new DialogInterface.OnClickListener() {
                   @Override
                   public void onClick(DialogInterface arg0, int index) {
                       switch (index) {
                       case 0:
                           // 系统默认语言
                           languageId = 0;
                           break;
                       case 1:
                           // 简体中文
                           languageId = 1;
                           break;
                       case 2:
                           // 英语
                           languageId = 2;

                           break;
                       case 3:
                           // 阿拉伯语
                           languageId = 3;

                           break;
                       default:
                           break;
                       }
                       languagePre.edit().putInt("id", languageId).commit();
                   }
               });
       // 保存
       builder.setPositiveButton("保存", new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int which) {
               ((Activity) context).finish();
               Intent intent = new Intent();
               intent.setClass(context, MainActivity.class);
               context.startActivity(intent);
           }
       });
       builder.show();
   }
//读取
   private void read() {
       SharedPreferences languagePre = getSharedPreferences("language_choice",
               Context.MODE_PRIVATE);
       int id = languagePre.getInt("id", 0);
       Log.d("MainActivity", "langauge_id=" + id);
       Toast.makeText(context, "langauge_id=" + id, Toast.LENGTH_LONG).show();
       // 应用内配置语言
       Resources resources = getResources();// 获得res资源对象
       Configuration config = resources.getConfiguration();// 获得设置对象
       DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。
       switch (id) {
       case 0:
           config.locale = Locale.getDefault(); // 系统默认语言
           break;
       case 1:
           config.locale = Locale.SIMPLIFIED_CHINESE; // 简体中文
           break;
       case 2:
           config.locale = Locale.ENGLISH; // 英文
           break;
       default:
           config.locale = Locale.getDefault();
           break;
       }
       resources.updateConfiguration(config, dm);
   }
}

温馨提示:答案为网友推荐,仅供参考
相似回答