1:各国语言的string values2:在功能清单文件中对要进行切换acitivity 进行配置      android:configChanges="locale"
 1 public static void initLanguage(Context context) { 2     //应用内配置语言 3     Resources resources = context.getResources();//获得res资源对象 4     Configuration config = resources.getConfiguration();//获得设置对象 5     DisplayMetrics dm = resources.getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。 6     if (SDKConfig.getLanguage().equals("zh")) { 7         config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文 8     } else { 9         config.locale = new Locale("ar");10     }11     resources.updateConfiguration(config, dm);12 }

 重启 Activity

我 们的 App 有个启动页 WelcomeActivity,类似微信那个小人启动页,如果从欢迎页重启,并不是一个好的体验,应该和微信的语言设置一样,直接回到 HomeActivity ,而不是从 WelcomeActivity 重新打开。实现其实也很简单,代码如下:

 Intent intent = new Intent(this, HomeActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); getActivity().startActivity(intent);

 

正常来说这段代码应该是没问题的,但是假如你的 App 存在某个 activity 和当前设置页 activity 不在一个 task 栈内的话(比如你从某个通知页用 FLAG_ACTIVITY_NEW_TASK 启动的一个 activity),就不会应用语言设置。因此可以直接杀掉当前 App 的进程,保证是“整个”重启了:

1 Intent intent = new Intent(this, HomeActivity.class);2 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);3 startActivity(intent);4 // 杀掉进程5 android.os.Process.killProcess(android.os.Process.myPid());6 System.exit(0);

按道理杀掉进程的两行代码任意一行即可,但是查阅相关资料,还是两个都加上吧,如果有详细了解欢迎沟通。此段代码其实参考自 CustomActivityOnCrash 开源项目,有兴趣的可以研究下这个开源库捕捉崩溃信息,重启应用部分的代码。

 

个人觉得这种重启HomeActivity的方法太粗暴了而且体验不好,不过貌似微信也是这么重启了HomeActivity。一般语言切换的设置会藏的比较深,比如微信,如果一个用户对手机操作不熟或者说对这个应用不熟,不小心切换了不知道什么语言然后给我跳回主页,再想设回中文就麻烦咯。所以,我认为最好是切完语言立即刷新然后还是停留当前页比较好。具体实现如下:

 

1、还是要添加多语言文件,跟上面的步骤1一样;

 

2、在BaseActivity中实现语言切换代码:

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        EventBus.getDefault().register(this);        changeAppLanguage();    }

1 public void changeAppLanguage() { 2 String sta = Store.getLanuageIsChinese() ? "zh" : "en";//这是SharedPreferences工具类,用于保存设置,代码很简单,自己实现吧 3 // 本地语言设置 4 Locale myLocale = new Locale(sta); 5 Resources res = getResources(); 6 DisplayMetrics dm = res.getDisplayMetrics(); 7 Configuration conf = res.getConfiguration(); 8 conf.locale = myLocale; 9 res.updateConfiguration(conf, dm);10 }

1 public void onEvent(String str) {2 switch (str) {3 case Constant.EVENT_REFRESH_LANGUAGE:4 changeAppLanguage();5 recreate();//刷新界面6 break;7 }8 }

1 @Override2 protected void onDestroy() {3 super.onDestroy();4 EventBus.getDefault().unregister(this);5 }

 

3、设置界面中的实现自然就是更新sharedPreferences 中的设置,然后发送EventBus就行啦

         
      if () {     //中文2             Store.setLanuageIsChinese(true);3         } else if () {     //英文4             Store.setLanuageIsChinese(false);5         }6         EventBus.getDefault().post(Constant.EVENT_REFRESH_LANGUAGE);
各国语言缩写-各国语言简称en 英文 en_US 英文 (美国) ar 阿拉伯文 ar_AE 阿拉伯文 (阿拉伯联合酋长国) ar_BH 阿拉伯文 (巴林) ar_DZ 阿拉伯文 (阿尔及利亚) ar_EG 阿拉伯文 (埃及) ar_IQ 阿拉伯文 (伊拉克) ar_JO 阿拉伯文 (约旦) ar_KW 阿拉伯文 (科威特) ar_LB 阿拉伯文 (黎巴嫩) ar_LY 阿拉伯文 (利比亚) ar_MA 阿拉伯文 (摩洛哥) ar_OM 阿拉伯文 (阿曼) ar_QA 阿拉伯文 (卡塔尔) ar_SA 阿拉伯文 (沙特阿拉伯) ar_SD 阿拉伯文 (苏丹) ar_SY 阿拉伯文 (叙利亚) ar_TN 阿拉伯文 (突尼斯) ar_YE 阿拉伯文 (也门) be 白俄罗斯文 be_BY 白俄罗斯文 (白俄罗斯) bg 保加利亚文 bg_BG 保加利亚文 (保加利亚) ca 加泰罗尼亚文 ca_ES 加泰罗尼亚文 (西班牙) ca_ES_EURO 加泰罗尼亚文 (西班牙,Euro) cs 捷克文 cs_CZ 捷克文 (捷克共和国) da 丹麦文 da_DK 丹麦文 (丹麦) de 德文 de_AT 德文 (奥地利) de_AT_EURO 德文 (奥地利,Euro) de_CH 德文 (瑞士) de_DE 德文 (德国) de_DE_EURO 德文 (德国,Euro) de_LU 德文 (卢森堡) de_LU_EURO 德文 (卢森堡,Euro) el 希腊文 el_GR 希腊文 (希腊) en_AU 英文 (澳大利亚) en_CA 英文 (加拿大) en_GB 英文 (英国) en_IE 英文 (爱尔兰) en_IE_EURO 英文 (爱尔兰,Euro) en_NZ 英文 (新西兰) en_ZA 英文 (南非) es 西班牙文 es_BO 西班牙文 (玻利维亚) es_AR 西班牙文 (阿根廷) es_CL 西班牙文 (智利) es_CO 西班牙文 (哥伦比亚) es_CR 西班牙文 (哥斯达黎加) es_DO 西班牙文 (多米尼加共和国) es_EC 西班牙文 (厄瓜多尔) es_ES 西班牙文 (西班牙) es_ES_EURO 西班牙文 (西班牙,Euro) es_GT 西班牙文 (危地马拉) es_HN 西班牙文 (洪都拉斯) es_MX 西班牙文 (墨西哥) es_NI 西班牙文 (尼加拉瓜) et 爱沙尼亚文 es_PA 西班牙文 (巴拿马) es_PE 西班牙文 (秘鲁) es_PR 西班牙文 (波多黎哥) es_PY 西班牙文 (巴拉圭) es_SV 西班牙文 (萨尔瓦多) es_UY 西班牙文 (乌拉圭) es_VE 西班牙文 (委内瑞拉) et_EE 爱沙尼亚文 (爱沙尼亚) fi 芬兰文 fi_FI 芬兰文 (芬兰) fi_FI_EURO 芬兰文 (芬兰,Euro) fr 法文 fr_BE 法文 (比利时) fr_BE_EURO 法文 (比利时,Euro) fr_CA 法文 (加拿大) fr_CH 法文 (瑞士) fr_FR 法文 (法国) fr_FR_EURO 法文 (法国,Euro) fr_LU 法文 (卢森堡) fr_LU_EURO 法文 (卢森堡,Euro) hr 克罗地亚文 hr_HR 克罗地亚文 (克罗地亚) hu 匈牙利文 hu_HU 匈牙利文 (匈牙利) is 冰岛文 is_IS 冰岛文 (冰岛) it 意大利文 it_CH 意大利文 (瑞士) it_IT 意大利文 (意大利) it_IT_EURO 意大利文 (意大利,Euro) iw 希伯来文 iw_IL 希伯来文 (以色列) ja 日文 ja_JP 日文 (日本) ko 朝鲜文 ko_KR 朝鲜文 (南朝鲜) lt 立陶宛文 lt_LT 立陶宛文 (立陶宛) lv 拉托维亚文(列托) lv_LV 拉托维亚文(列托) (拉脱维亚) mk 马其顿文 mk_MK 马其顿文 (马其顿王国) nl 荷兰文 nl_BE 荷兰文 (比利时) nl_BE_EURO 荷兰文 (比利时,Euro) nl_NL 荷兰文 (荷兰) nl_NL_EURO 荷兰文 (荷兰,Euro) no 挪威文 no_NO 挪威文 (挪威) no_NO_NY 挪威文 (挪威,Nynorsk) pl 波兰文 pl_PL 波兰文 (波兰) pt 葡萄牙文 pt_BR 葡萄牙文 (巴西) pt_PT 葡萄牙文 (葡萄牙) pt_PT_EURO 葡萄牙文 (葡萄牙,Euro) ro 罗马尼亚文 ro_RO 罗马尼亚文 (罗马尼亚) ru 俄文 ru_RU 俄文 (俄罗斯) sh 塞波尼斯-克罗地亚文 sh_YU 塞波尼斯-克罗地亚文 (南斯拉夫) sk 斯洛伐克文 sk_SK 斯洛伐克文 (斯洛伐克) sl 斯洛文尼亚文 sl_SI 斯洛文尼亚文 (斯洛文尼亚) sq 阿尔巴尼亚文 sq_AL 阿尔巴尼亚文 (阿尔巴尼亚) sr 塞尔维亚文 sr_YU 塞尔维亚文 (南斯拉夫) sv 瑞典文 sv_SE 瑞典文 (瑞典) th 泰文 th_TH 泰文 (泰国) tr 土耳其文 tr_TR 土耳其文 (土耳其) uk 乌克兰文 uk_UA 乌克兰文 (乌克兰) zh 中文 zh_CN 中文 (中国) zh_HK 中文 (香港) zh_TW 中文 (台湾)  Countries and Regions    国家或地区    国际域名缩写Angola    安哥拉    AOAfghanistan    阿富汗    AFAlbania    阿尔巴尼亚    ALAlgeria    阿尔及利亚    DZAndorra    安道尔共和国    ADAnguilla    安圭拉岛    AIAntigua and Barbuda    安提瓜和巴布达    AGArgentina    阿根廷    ARArmenia    亚美尼亚    AMAscension    阿森松     Australia    澳大利亚    AUAustria    奥地利    ATAzerbaijan    阿塞拜疆    AZBahamas    巴哈马    BSBahrain    巴林    BHBangladesh    孟加拉国    BDBarbados    巴巴多斯    BBBelarus    白俄罗斯    BYBelgium    比利时    BEBelize    伯利兹    BZBenin    贝宁    BJBermuda Is.    百慕大群岛    BMBolivia    玻利维亚    BOBotswana    博茨瓦纳    BWBrazil    巴西    BRBrunei    文莱    BNBulgaria    保加利亚    BGBurkina-faso    布基纳法索    BFBurma    缅甸    MMBurundi    布隆迪    BICameroon    喀麦隆    CMCanada    加拿大    CACayman Is.    开曼群岛     Central African Republic    中非共和国    CFChad    乍得    TDChile    智利    CLChina    中国    CNColombia    哥伦比亚    COCongo    刚果    CGCook Is.    库克群岛    CKCosta Rica    哥斯达黎加    CRCuba    古巴    CUCyprus    塞浦路斯    CYCzech Republic    捷克    CZDenmark    丹麦    DKDjibouti    吉布提    DJDominica Rep.    多米尼加共和国    DOEcuador    厄瓜多尔    ECEgypt    埃及    EGEI Salvador    萨尔瓦多    SVEstonia    爱沙尼亚    EEEthiopia    埃塞俄比亚    ETFiji    斐济    FJFinland    芬兰    FIFrance    法国    FRFrench Guiana    法属圭亚那    GFGabon    加蓬    GAGambia    冈比亚    GMGeorgia    格鲁吉亚    GEGermany    德国    DEGhana    加纳    GHGibraltar    直布罗陀    GIGreece    希腊    GRGrenada    格林纳达    GDGuam    关岛    GUGuatemala    危地马拉    GTGuinea    几内亚    GNGuyana    圭亚那    GYHaiti    海地    HTHonduras    洪都拉斯    HNHongkong    香港    HKHungary    匈牙利    HUIceland    冰岛    ISIndia    印度    INIndonesia    印度尼西亚    IDIran    伊朗    IRIraq    伊拉克    IQIreland    爱尔兰    IEIsrael    以色列    ILItaly    意大利    ITIvory Coast    科特迪瓦     Jamaica    牙买加    JMJapan    日本    JPJordan    约旦    JOKampuchea (Cambodia )    柬埔寨    KHKazakstan    哈萨克斯坦    KZKenya    肯尼亚    KEKorea    韩国    KRKuwait    科威特    KWKyrgyzstan    吉尔吉斯坦    KGLaos    老挝    LALatvia    拉脱维亚    LVLebanon    黎巴嫩    LBLesotho    莱索托    LSLiberia    利比里亚    LRLibya    利比亚    LYLiechtenstein    列支敦士登    LILithuania    立陶宛    LTLuxembourg    卢森堡    LUMacao    澳门    MOMadagascar    马达加斯加    MGMalawi    马拉维    MWMalaysia    马来西亚    MYMaldives    马尔代夫    MVMali    马里    MLMalta    马耳他    MTMariana Is    马里亚那群岛     Martinique    马提尼克     Mauritius    毛里求斯    MUMexico    墨西哥    MXMoldova, Republic of    摩尔多瓦    MDMonaco    摩纳哥    MCMongolia    蒙古    MNMontserrat Is    蒙特塞拉特岛    MSMorocco    摩洛哥    MAMozambique    莫桑比克    MZNamibia    纳米比亚    NANauru    瑙鲁    NRNepal    尼泊尔    NPNetheriands Antilles    荷属安的列斯     Netherlands    荷兰    NLNew Zealand    新西兰    NZNicaragua    尼加拉瓜    NINiger    尼日尔    NENigeria    尼日利亚    NGNorth Korea    朝鲜    KPNorway    挪威    NOOman    阿曼    OMPakistan    巴基斯坦    PKPanama    巴拿马    PAPapua New Cuinea    巴布亚新几内亚    PGParaguay    巴拉圭    PYPeru    秘鲁    PEPhilippines    菲律宾    PHPoland    波兰    PLFrench Polynesia    法属玻利尼西亚    PFPortugal    葡萄牙    PTPuerto Rico    波多黎各    PRQatar    卡塔尔    QAReunion    留尼旺     Romania    罗马尼亚    RORussia    俄罗斯    RUSaint Lueia    圣卢西亚    LCSaint Vincent    圣文森特岛    VCSamoa Eastern    东萨摩亚(美)     Samoa Western    西萨摩亚     San Marino    圣马力诺    SMSao Tome and Principe    圣多美和普林西比    STSaudi Arabia    沙特阿拉伯    SASenegal    塞内加尔    SNSeychelles    塞舌尔    SCSierra Leone    塞拉利昂    SLSingapore    新加坡    SGSlovakia    斯洛伐克    SKSlovenia    斯洛文尼亚    SISolomon Is    所罗门群岛    SBSomali    索马里    SOSouth Africa    南非    ZASpain    西班牙    ESSri Lanka    斯里兰卡    LKSt.Lucia    圣卢西亚    LCSt.Vincent    圣文森特    VCSudan    苏丹    SDSuriname    苏里南    SRSwaziland    斯威士兰    SZSweden    瑞典    SESwitzerland    瑞士    CHSyria    叙利亚    SYTaiwan    台湾省    TWTajikstan    塔吉克斯坦    TJTanzania    坦桑尼亚    TZThailand    泰国    THTogo    多哥    TGTonga    汤加    TOTrinidad and Tobago    特立尼达和多巴哥    TTTunisia    突尼斯    TNTurkey    土耳其    TRTurkmenistan    土库曼斯坦    TMUganda    乌干达    UGUkraine    乌克兰    UAUnited Arab Emirates    阿拉伯联合酋长国    AEUnited Kiongdom    英国    GBUnited States of America    美国    USUruguay    乌拉圭    UYUzbekistan    乌兹别克斯坦    UZVenezuela    委内瑞拉    VEVietnam    越南    VNYemen    也门    YEYugoslavia    南斯拉夫    YUZimbabwe    津巴布韦    ZWZaire    扎伊尔    ZRZambia    赞比亚    ZM

 

转载于:https://www.cnblogs.com/hello-studio/p/9640731.html

更多相关文章

  1. Android(安卓)多语言 多地区对应表
  2. Android多国语言文件夹
  3. 【Android】多语言Values
  4. android多国语言文件夹汇总
  5. Android多语言适配values文件夹命名
  6. Android多国语言-国家代码清单
  7. android 杂项-备忘
  8. Archos G9 平板將在 2012 年「前三月」得到 Ice Cream Sandwich
  9. android之res/values、国际化

随机推荐

  1. php标准库 SPL 数据结构之-----SplDoubly
  2. PHPCMS V9 的手机门户wap绑定单页面
  3. phpstorm取消自动保存并标识修改的文件为
  4. 尽管“SQL语法错误”消息仍然成功执行
  5. 使用mysql验证在php中登录表单
  6. php学习笔记四:使用 xampp-部署php网站
  7. JRoute::_() -函数在哪里?在joomla
  8. 如何在角度js中获取url参数
  9. Wordpress主题调试:插件侧边栏导致原始侧
  10. 使用jquery和php手动在数据库中增加一个