zoukankan      html  css  js  c++  java
  • Android应用的本地化及知识拓展之配置修饰符

      步骤很简单,只需要两步:

      1.创建带有目标语言的配置修饰符的资源子目录

      2.将可选资源放入该目录下,android系统会自动处理后续工作

      在这里我们需要讲解一下配置修饰符。

      中文的配置修饰符:-zh,那么我们需要在res目录下新建两个子目录:res/raw-zh,res/values-zh。

      对于没有配置修饰符修饰的子目录,安卓都识别为默认资源目录。但是有一个例外,那就是屏幕显示密度(drawable资源),通常具有三个配置修饰符:-mdpi -hdpi -xhdpi。安卓系统选择何种drawable资源综合考虑屏幕密度和实际尺寸,甚至有可能会选择低于或高于当前设备屏幕密度的drawable资源,然后通过缩放来实现匹配。但长话短说,最重要的是我们需要记住,res/drawable并不是默认资源目录,我们无需将默认drawable资源放到该目录下

      常用的配置修饰符

        中文语言(values-zh)

        水平模式的屏幕方位(layout-land)

        中等的屏幕显示密度(drawable-mdpi)

        11及以上的API级别(values-v11)

        屏幕尺寸修饰符

        

      那么有哪些是具有配置修饰符的设备特征呢?

        

        关于设备配置特征及其对应配置修饰符请查看http://developer.android.com/guide/topics/resources/providing-resources.html

         上图也是配置修饰符的优先级,这话怎么理解呢?我们直接上实例:

        old phone setting: 语言(英文),屏幕方位(垂直)

        我们想干什么:当改变手机语言配置时,该app也能变成中文;当屏幕方位变成水平时,标题能变成另一句更长的话。于是我们做了两件事:values-zh(用来存放中文字符串资源),values-land(用于存放当屏幕处于水平状态时的标题字符串)

        new phone setting:语言(中文)。屏幕方位(水平)

        这时候问题来了:安卓系统会选用那个values资源呢?这时候对应上图所示的配置修饰符优先级,我们可以发现语言的优先级高于屏幕方位的优先级,因此系统会选用values-zh,而不是values-land。

        问题知道了,如何解决呢?答案是多重配置修饰符。

        通过values-zn-land就可以解决这个问题了。但是我们必须注意,顺序也是通过优先级来确定的。

        整个配置修饰符的使用过程是这样的:

        手机配置-----(完全对应)---->配置修饰符--(获取对应资源)-->完成改变

        但是对于屏幕密度这个配置并非完全对应,这话什么意思呢?还是举例,比如说手机配置语言改成了中文,那么就会和-zh对应,但是屏幕密度如果是中等,但并不会必然和-mdpi对应,系统会综合考虑屏幕密度以及实际手机尺寸来得到应有的资源。

        至于安卓res目录下资源目录名称清单:http://developer.android.com/guide/topics/resources/available-resources.html

        太阳照常升起,人生寂寞如雪。

  • 相关阅读:
    POJ 1680 Fork() Makes Trouble
    课堂改进意见
    梦断代码 读后感3
    梦断代码 读后感2
    找一问题
    软件评价——搜狗输入法
    《梦断代码》读后感1
    站立会议第十天
    站立会议第九天
    站立会议第八天
  • 原文地址:https://www.cnblogs.com/JiMoRuXue/p/5047456.html
Copyright © 2011-2022 走看看