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

  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

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

Android-应用的本地化及知识拓展之配置修饰符的更多相关文章

  1. C#基础知识八之访问修饰符

    1.  类的访问修饰符 修饰符 访问权限 无或者internal 只能在同一个程序集中访问类 public 同一个程序集或引用该程序集的外部都可访问类 abstract或internal abstra ...

  2. Java基础知识回顾之二 ----- 修饰符和String

    前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...

  3. 《Java基础知识》Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...

  4. C++基础知识篇:C++ 修饰符类型

    C++ 允许在 char.int 和 double 数据类型前放置修饰符.修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求. C/C++的学习裙[七一二 二八四 七零五 ],无论你是小白还是 ...

  5. Android屏幕适配方案——基于最小宽度(Smallest-width)限定符

    转自:https://www.cnblogs.com/error404/p/3815739.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_ ...

  6. 开发一款高端大气上档次的android应用需要必备的知识——记于2013年末

    Android入门还是很简单的,看两本书,翻阅几篇文章,搭建了开发环境就算入门了.可是怎样开发一款完备的android应用呢,开发一款高端的android应用又需要那些知识呢,作者根据几年的开发经验做 ...

  7. [转]Android进程与线程基本知识

    转自:http://www.cnblogs.com/hanyonglu/archive/2012/04/12/2443262.html 本文介绍Android平台中进程与线程的基本知识. 很早的时候就 ...

  8. Android之.9图的知识

    Android之.9图的知识 .9图的介绍 .9图也称为pPatch图,它是android app开发里一种特殊的图片形式,文件的扩展名为:.9.png. 9patch图片的作用就是在图片拉伸的时候保 ...

  9. 跟踪oracle中sql语句运行过程及相关知识拓展

    select * from v$sqlarea; select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'; 这种方 ...

随机推荐

  1. eclipse在当前项目里面批量替换所有单词

    ctrl+f里面只能单个文件用,要整个项目批量替换. 1. 先选中你要替换字符串, 2. 再菜单栏中找到Search→Text→Project,这样就会在整个项目中查找单词. 3. 然后在Search ...

  2. 基于PHP和mysql的自动生成表单

    开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...

  3. JQuery连接地址

    <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> http://co ...

  4. web安全:xss && csrf

    首先在user.php文件中去除黑名单的第一行标签,在白名单中添加<script>E1:csrf攻击zoobarcsrf:cross-site request forgery    跨站伪 ...

  5. akka简单示例-1

    刚刚开始接触akka,网上找了2个简单示例,并在公司运营机器上尝试,踩了一些坑,在此记录. 1. 本地hello world [torstan@sparkb5-i ~/akka_example/hel ...

  6. web前端框架选型

    1.1.界面使用脚本语言有html5,php5,css3,js动态库jquery等 1.2.html采用技术为最新html5技术,html5生成的页面在phone.pad.Phablets.pc也可方 ...

  7. vbox端口转发

    端口转发:setting->network->adapter:attached to NAT.port forwarding rules->name    protocol     ...

  8. 设计模式(九):Composite组合模式 -- 结构型模式

    1. 概述 在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面. 例子1:就是多级树形菜单. 例子2:文件和文件夹目录 2.问题 我们可以使用简单的对象组合成复杂的对象,而这个复杂对 ...

  9. HDU_1239——再次调用外星智慧

    Problem Description A message from humans to extraterrestrial intelligence was sent through the Arec ...

  10. 单网卡多IP导致的socket connect 10060超时错误

    问题: 接管别人代码时遗留的一个bug,在win7下,给一个网卡设置多个ip时,发现无法连接上服务器了.XP下就不会,这多个ip为192.168.1.127,172.1.1.13,10.0.0.1. ...