实习期间,师父要求做app的中英文切换,就顺便记录了下。

 

一、AndroidManifest.xml文件(清单文件)

在每个要切换语言的Activity下面添加:

android:configChanges="locale"

1 <activity2             android:name="com.activity.RepairActivity"3             android:configChanges="locale"4             android:launchMode="singleTop"5             android:screenOrientation="portrait"6             android:windowSoftInputMode="adjustPan" >7         activity>

 百度上都是这么写的,然而我并没有用到。

 

二、创建一个英文的strings.xml文件,目录名为values-en

or

 

values/strings.xml这个为默认语言,如果values-en目录下的strings.xml不存在,那英文就会选取默认语言。

1 <?xml version="1.0" encoding="utf-8"?>2 <resources>3     <string name="app_name">languagestring>4     <string name="action_settings">Settingsstring>5     <string name="alert_data_init">updating..string>6 resources>

 

三、核心代码

 1 /** 2      * 刷新语言 3      */ 4     public void updateActivity(String sta) { 5  6         // 本地语言设置 7         Locale myLocale = new Locale(sta); 8         Resources res = getResources();// 获得res资源对象 9         DisplayMetrics dm = res.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。10         Configuration conf = res.getConfiguration();// 获得设置对象11         conf.locale = myLocale;// 简体中文12         res.updateConfiguration(conf, dm);13         // startActivity((new Intent(this, TabActivity.class)));14         // this.finish();15     }

String sta= getResources().getConfiguration().locale.getCountry()  //用于判断当前的语言

Locale.getDefault().getLanguage() //语言:取到的比如中文为zh,英文为en,日文为ko;

Locale.getDefault().toString() //具体的类别:比如繁体为zh_TW,简体为zh_CN。英文中有en_GB;日文有ko_KR。 把需要切换的Strings.xml对应的语言,传入到 updateActivity(String sta)  方法.....  

也可以调用此类

 

public class LanguageSettings {    private static LanguageSettings language = null;    private String currentLanguage = "zh";    private LanguageSettings() {    }    public static LanguageSettings getInstance() {        if (language == null) {            language = new LanguageSettings();        } else {        }        return language;    }    public String getCurrentLanguage() {        return currentLanguage;    }    public void switchCurrentLanguage() {        if (currentLanguage.equals("zh")) {            currentLanguage = "en";        } else {            currentLanguage = "zh";        }    }}
LanguageSettings

 

 1 // 切换成英文 2                 if (LanguageSettings.getInstance().getCurrentLanguage() 3                         .equals("zh")) { 4                     updateActivity("en"); 5                     LanguageSettings.getInstance().switchCurrentLanguage(); 6                 } else { 7                     // 切换成中文 8                     updateActivity("zh"); 9                     LanguageSettings.getInstance().switchCurrentLanguage();10                 }

LanguageSettings.getInstance().getCurrentLanguage() 给变量动态赋值的标识列,用于判断!(采用单例模式)

 

 

我自己写的是这样的:

private void checkLanguage() {
        // 界面出来前判断好
        String aString = SystemArgs.LANGUAGE;
        System.out.print(aString);
        System.out.print(SystemArgs.LANGUAGE);
        String language = pref.getString(SystemArgs.LANGUAGE, "Chinese");
        System.out.print(language);
        Log.i("a", language);
        try {
            if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))
                chooseLanguage(Locale.CHINA);
            else if (language.equalsIgnoreCase("English")
                    || language.equals("英文"))
                chooseLanguage(Locale.US);
        } catch (Exception e) {
            // Log.i("error", "语言选择出错");
        }

    }

 

private void chooseLanguage(Locale locale) {
        Resources resources = getResources();// 获得res资源对象

        Configuration config = resources.getConfiguration();// 获得设置对象

        DisplayMetrics dm = resources.getDisplayMetrics();// 获得屏幕参数:主要是分辨率,像素等。

        config.locale = locale; // 语言

        resources.updateConfiguration(config, dm);
    }

 对于图片的更改,需要自己在oncreate里判断语言,然后显示什么图片

 

四、其他的记录

对ListPreference的语言选项设置默认值

try {
            if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))
                CLanguage_ListPreference.setValueIndex(0);
            else if (language.equalsIgnoreCase("English")
                    || language.equals("英文"))
                CLanguage_ListPreference.setValueIndex(1);
        } catch (Exception e) {
            // Log.i("error", "语言选择出错");
        }

 

String language = defaultSharedPreferences.getString(
                SystemArgs.LANGUAGE, "中文");
        ImageView button = null;
        // 图片要自己去判断语言选择
        if (language.equalsIgnoreCase("Chinese") || language.equals("中文"))

转载于:https://www.cnblogs.com/tutuskys/p/4863146.html

更多相关文章

  1. Android遇上Kotlin | Kotlin若只如初见
  2. 用C++语言开发Android程序 配置开发环境
  3. Android(安卓)客户端与服务端JSP相互传递中文
  4. 10.28,python,django中templates的奇偶性,python,swift多语言文件
  5. Android学习笔记之解决下载中中文文件名问题
  6. Android(安卓)socket通信,读去中文汉字乱码问题解决。
  7. Android(安卓)中文 API(123) ―― AbsListView(二)
  8. Android的语言设置(一)
  9. Android(安卓)国际化 语言相关 和 打包 多渠道配置

随机推荐

  1. 芋道 Apollo 极简入门
  2. 芋道 Spring Boot WebSocket 入门
  3. 洞玩年!刚面世的黑洞照片快被玩坏了!
  4. 直观讲解一下 RPC 调用和 HTTP 调用的区
  5. Apollo 源码解析 —— 调试环境搭建
  6. 白嫖七牛云作为个人博客免费图床
  7. 第九周作业
  8. 芋道 RocketMQ 安装部署
  9. Mybatis-Plus 真好用(乡村爱情加持)
  10. 国产微服务网关 APISIX,有点意思,直接开锤,