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
太阳照常升起,人生寂寞如雪。
Android-应用的本地化及知识拓展之配置修饰符的更多相关文章
- C#基础知识八之访问修饰符
1. 类的访问修饰符 修饰符 访问权限 无或者internal 只能在同一个程序集中访问类 public 同一个程序集或引用该程序集的外部都可访问类 abstract或internal abstra ...
- Java基础知识回顾之二 ----- 修饰符和String
前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...
- 《Java基础知识》Java访问修饰符(访问控制符)
Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...
- C++基础知识篇:C++ 修饰符类型
C++ 允许在 char.int 和 double 数据类型前放置修饰符.修饰符用于改变基本类型的含义,所以它更能满足各种情境的需求. C/C++的学习裙[七一二 二八四 七零五 ],无论你是小白还是 ...
- Android屏幕适配方案——基于最小宽度(Smallest-width)限定符
转自:https://www.cnblogs.com/error404/p/3815739.html 一.关于布局适配建议 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_ ...
- 开发一款高端大气上档次的android应用需要必备的知识——记于2013年末
Android入门还是很简单的,看两本书,翻阅几篇文章,搭建了开发环境就算入门了.可是怎样开发一款完备的android应用呢,开发一款高端的android应用又需要那些知识呢,作者根据几年的开发经验做 ...
- [转]Android进程与线程基本知识
转自:http://www.cnblogs.com/hanyonglu/archive/2012/04/12/2443262.html 本文介绍Android平台中进程与线程的基本知识. 很早的时候就 ...
- Android之.9图的知识
Android之.9图的知识 .9图的介绍 .9图也称为pPatch图,它是android app开发里一种特殊的图片形式,文件的扩展名为:.9.png. 9patch图片的作用就是在图片拉伸的时候保 ...
- 跟踪oracle中sql语句运行过程及相关知识拓展
select * from v$sqlarea; select * from v$sqlarea where first_load_time>'2010-11-27/09:30:00'; 这种方 ...
随机推荐
- WindowManager
我们Android平台是一个又一个的Activity组成的,每一个Activity有一个或者多个View构成.所以说,当我们想显示一个界面的时候,我们首先想到的是建立一个Activity,然后所有的操 ...
- Android常用URI以及URI简介
Android常用URI android管理联系人的URI: ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri ContactsContract.Comm ...
- css background-position:x% y%
规则1: background-position:xpx ypx; 为正值时:背景图片的左上顶点朝右下移动直至距离div的左上顶点为xpx ypx: 规则2: background-position: ...
- Linux定时任务命令crontab
作为一个php码农,linux接触总是很少,但又是必须会的一项技能,今天学到的linux命令是crontab命令. 注:以下总结基于Ubuntu 12.04 去/etc目录下看看 先去Ubuntu的/ ...
- Java 的简单了解
本文是主要根据百度百科以网上一些资料,整理的一点对Java的浅显的了解,不当之处,还请大家批评指正. 最初见到Java这个单词,是在以前的手机上,游戏启动时总会显示java的图标和名字,就感觉java ...
- Flask源码阅读笔记(一)
作者:acezio链接:https://zhuanlan.zhihu.com/p/21358368来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. flask的url r ...
- [kuangbin带你飞]专题十 匹配问题 二分图最大权匹配
二分图最大权匹配有km算法和网络流算法 km算法模板默认解决最大权匹配的问题 而使用最小费用最大流 是解决最小权匹配问题 这两种办法都可以求最大最小权 需要两次取反 TAT 感觉讲km会很难的样子.. ...
- eclipse中myBatis引入
1.添加config.xml配置文件 2.定义与数据库的数据实体映射类 3.创建操作表的是sql映射文件 即:mapper.xml 4.在配置文件config.xml中注册sql映射文件(步骤三创建的 ...
- 一个读取propeties配置文件的工具类,线程安全的
public class ConfigUtil { private static Map<String,Properties> map = new HashMap<String,Pr ...
- c#使用UIA进行模拟点击操作
之前,我写过一篇c#使用spy进行模拟操作的文章,有朋友在留言中提到了UIA进行操作,今天也使用UIA重新实现一次对vnc窗体的控制测试. 实现目标 在server框内填入192.168.2.200 ...