values/strings.xml与xml/english.xml的内容是相同的;values-zh-rCN/strings.xml与xml/chinese.xml的" name="description" />

android 语言设置(5)

来源:未知 责任编辑:责任编辑 发表时间:2013-12-01 14:14 点击:

 

values/strings.xml与xml/english.xml的内容是相同的;values-zh-rCN/strings.xml与xml/chinese.xml的内容也是相同的。出现这样的冗余是因为生成APK时values下的内容都打到rasc去了,读取不了了。
   
    自己实现语系的转换需要考虑到:
    3.1  R.xxxxx.id与对应语系中文本串的对应(需要特别考虑到R.array.string字符串数组)。
    3.2 解析xml。
    3.3 设置语系后,所有界面元素的手动刷新。
   
    在xml中声明一个string是这个的格式:
view plaincopy to clipboardprint?

<string name="app_name">语言应用</string> 

    <string name="app_name">语言应用</string>    对应R文件会生成一个id指代该string
view plaincopy to clipboardprint?

public static final class string { 
    public static final int app_name=0x7f050001; 

    public static final class string {        public static final int app_name=0x7f050001;    }
    3.1的问题就是如何实现id与string的匹配,解决方法为:
view plaincopy to clipboardprint?

Resources res = context.getResources(); 
String pkg = context.getPackageName(); 
String tag = "app_name"; 

int idTag = res.getIdentifier(tag, "string", pkg); 

        Resources res = context.getResources();        String pkg = context.getPackageName();        String tag = "app_name";        int idTag = res.getIdentifier(tag, "string", pkg);    3.2 解析XML
    这儿要用到一个新的工具了:XmlResourceParser,解析过程有点绕,但比SAX简单些。具体细节见LanguageApp_Sodino工程中的代码吧。
   
    3.3 手动刷新界面。
    要获取所有涉及到语系更新组件的索引逐一更新,体力活儿,细心点花点力气也可实现。
   
    详细实现过程见下面三个工程中:
    LanguageApp_APICheat
    LanguageApp_Reflection
    LanguageApp_Sodino
    (PS:不要问我为什么下载的工程在IDE中为什么无法直接使用,为什么打开是乱码红叉一大堆,既然是程序员,遇到问题是不是也该自己多思考思考呢。)

 

 

 

 

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Android 完全退出程序
  • 原创:Android应用开发-Andorid歌词秀,含源码
  • android 屏幕保护
  • Android手机软件汉化教程---第四课 dex文件汉化
  • 众多Android 开源项目推荐,给力工作给力学习
  • Android Audio代码分析4
  • Android得到已安装的应用程序信息!
  • Android开发者指南(29) —— USB Host and Accessory
  • Android成长的幕后推手:工程师鲁宾
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1