zoukankan      html  css  js  c++  java
  • android 多语言版本开发

     最近项目中用用到语言切换功能,第一想到的就是资源文件,没错。

           在资源文件中新建一个文件夹values-en,en表示英语,有一些还细化到地区,如values-en-rUS 即美国地区的英语,r是必需的。在里面新建一个strings.xml,把默认values文件夹中的strings.xml中的内容Copy至values-en中的strings.xml,再把该文件夹中的中文内容转换为英文,例如<string name="set">设置</string>转换为<string name="set">set</string>。不止values文件可以这样,res文件夹下的都可以,但是assets就不行,这是外部文件。如果有做webapp引用网页形式 考虑多语言版本,可以java代码判断系统语言,再去调用相应的html文件。

            然后再主Activity中写一个方法

            代码:

             public void switchLanguage(Locale locale) {
                     //应用内配置语言
          Resources resources =getResources();//获得res资源对象  
          Configuration config = resources.getConfiguration();//获得设置对象  
          DisplayMetrics dm = resources.getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。
          config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文
          resources.updateConfiguration(config, dm);
             }

       有一些相对不那么常用的语言Locale没提供相应的常量,这时

       如阿拉伯语,直接config.locale =new Locale("ar");        

       必须在OnCreate函数中调用

           还得注意的是:在AndroidManifest.xml中要配置一下

           在activity节点中加上这个属性: android:configChanges="locale"

           添加权限: <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />

  • 相关阅读:
    Android笔记之AsyncTask
    Android笔记之使用Glide加载网络图片、下载图片
    Android笔记之OnLongClickListener
    Android笔记之ViewModel的使用示例
    分享两款好玩的单机游戏^_^
    Android笔记之Retrofit与RxJava的组合
    15张扑克,让观众心选一张,然后分成3组,每组5张。通过询问观众心选的牌是否在于某组中,最后把选中的牌找出来。
    使用Retrofit发送POST请求提交JSON数据
    Android笔记之引用aar
    不可变类
  • 原文地址:https://www.cnblogs.com/aiguozhe/p/3866408.html
Copyright © 2011-2022 走看看