外置资源一个很重要的原因是Android的动态资源选取机制。

使用下面描述的结构,你可以为指定的语言、区域和硬件配置创建不同的资源值,供Android系统在运行时动态选取。

这能让你创建指定语言、区域和硬件的用户界面,而不需要更改你的代码。

通过在/res文件夹下设置平行的文件夹来设定供选择的资源,使用“-”分割符来指定应用程序支持的条件。

下面的层次例子,显示了文件夹结构,包括默认的字符串值,法语字符串值和额外的加拿大地区的法语字符串值。

Project/

res/

values/

strings.xml

values-fr/

strings.xml

values-fr-rCA/

strings.xml

下面的列表给出了你可以用来定制资源文件名的标识符:

❑语言                          两个小写的ISO 639-1语言代号(例如,en)

❑区域                        小写“r”,后跟两个大写的ISO 3166-1-α-2 语言代号

(例如,rUS,rGB)

❑屏幕方向              “port”(portrait)、“land”(landscape)、

“square”(square)之一

❑屏幕像素密度      一英寸中的像素点(dpi)(例如,92dpi,108dpi)

❑触摸屏类型         “notouch”、“stylus”、“finger”之一

❑键盘显示             “keysexposed ”或“keyshidden”

❑键盘输入类型    “nokeys”、“qwerty”、“12key”之一

❑UI导航类型        “notouch”、“dpad”、“trackball”、“wheel”之一

❑屏幕分辨率          最大的屏幕尺寸(像素)(例如,320x240)

你可以为任何资源类型指定多个标识符,相互之前使用“-”分隔符。任意组合都是支持的,但是,它们必须按照列表中给出顺序使用,且每种类型的标识符不能超过1个值。

接下来的例子显示了drawable资源有效的和无效的文件夹名。

❑ 有效:

drawable-en-rUS

drawable-en-keyshidden

drawable-land-notouch-nokeys-320x240

❑ 无效:

drawable-rUS-en (顺序错了)

drawable-rUS-rUK (单个类型的标识符拥有多个值)

当Android在运行时获取资源时,它会从可供选择的资源里寻找最匹配的。从文件夹(文件夹中都含有需要的值)列表开始,Android选择标识符匹配最多的文件夹。如果两个文件夹匹配的一样多,那么,上面列表中的匹配标识符的顺序会用来作决胜局的依据。

Android 为不同的语言和硬件创建资源相关推荐

  1. 在Android内核源代码工程中编写硬件驱动程序(1)

    在智能手机时代,每个品牌的手机都有自己的个性特点.正是依靠这种与众不同的个性来吸引用户,营造品牌凝聚力和用户忠城度,典型的代表非iphone莫属了.据统计,截止2011年5月,AppStore的应用软 ...

  2. 简单的入门Android开发和Java语言基础[图]

    简单的入门Android开发和Java语言基础[图] 前言: 去年年底到今年年初,我做过简单的智能家居,也实现过一些简单的直连和远程的智能家居.于是就将最简单的通信发布出来:智能家居简单实现-使用ES ...

  3. Android切换泰语,Android应用内切换语言

    首先扯点别的:这是第一次在简书上写东西,我突然明白为啥这么多人在简书上写东西了,因为没有广告啊,哈哈. 最近接触到Android 应用内切换语言的问题,研究了两天,做个记录先.实现了中文,英文,泰语的 ...

  4. Android+usb+spi,Android设备如何使用USB的硬件接口

    你知道Android设备如何使用USB的硬件接口吗?下面将由学习啦小编带大家来解答这个疑问吧,希望对大家有所收获! 如何处理硬件接口问题 最近业界的发展显示,智能手机/便携系统与自动化系统或机械系统之 ...

  5. 绘制Android机器人(c语言)

    绘制Android机器人 用c语言绘制Android机器人:难点在于坐标值的计算 用到的主要的绘图函数: 函数 功能 fillellipse 画填充椭圆(有边框) fillpie 画填充椭圆扇形(有边 ...

  6. Android 实现应用内语言切换(包括不重启应用方式)

    一.前言 对于一个移动应用,可能不仅仅是面向一个国家的用户,所以多语言国际化是移动应用开发中比较常见的一个功能:正常实现多语言国际化,我们只需要在资源目录下res/下创建需要支持的国家values目录 ...

  7. Android适配多国语言规则

    创建好的项目工程由于需求 需要做多国语言的支持  下面介绍怎么快捷的创建文件夹 建好一个android 的项目后,默认的res下面 有layout.values.drawable等目录 这些都是程序默 ...

  8. R语言gganimate包创建可视化gif动图、并使用anim_save函数保存可视化gif动图(gganimate export to gif)

    R语言gganimate包创建可视化gif动图.并使用anim_save函数保存可视化gif动图(gganimate export to gif) 目录

  9. R语言gganimate包创建可视化gif动图、可视化动图:ggplot2可视化静态散点图、gganimate包创建动态散点分面图(facet_wrap)动画基于transition_time函数

    R语言gganimate包创建可视化gif动图.可视化动图:ggplot2可视化静态散点图.gganimate包创建动态散点分面图(facet_wrap)动画基于transition_time函数 目 ...

最新文章

  1. java 非模态_Qt 之 模态、非模态、半模态窗口的介绍及 实现QDialog的exec()方法
  2. MySQL 的 count(*) 的优化,获取千万级数据表的总行数
  3. Docker_基础知识
  4. java如何将数据保存为xml6_用Java实现可保存状态的数据库生成XML树,源码来了(9)...
  5. bzoj3224 Tyvj 1728 普通平衡树题解--Treap
  6. 安装VSCode作为常用的文本编辑器
  7. vue 离开页面事件_【必看】58 道 Vue 常见面试题集锦,涵盖入门到精通,自测 Vue 掌握程度...
  8. 逆向知识第十讲,循环在汇编中的表现形式,以及代码还原
  9. 去中心化 去区块链_基于区块链的去中心化应用的四种架构模式候选
  10. 方法~作用于对象~失败_消息三:ActiveMQ Topic 消息失败重发
  11. ​全网首发,TensorFlow 2.0 中文视频教程来啦
  12. (45)FPGA同步复位与异步复位(同步复位)
  13. linux系统oracle启动过程,Linux主机下配置Oracle 10G自动启动过程记
  14. 屏蔽掉Accordion控件的键盘事件.
  15. 研究员轻松劫持2.8万台打印机
  16. matlab中用于离散系统求解的命令,MATLAB求解规划问题(线性规划, 整数规划, 非线性规划)...
  17. 看雪CTF.TSRC 2018 团队赛 第六题 『追凶者也』 解题思路
  18. 华为交换机关闭网口_华为交换机如何关闭网络端口号
  19. SpringBoot生命周期
  20. 鸿蒙发布会重播,华为鸿蒙发布会2021现场直播在线观看/回放入口

热门文章

  1. mysql query日期_如何获取mysql中两个日期之间的日期列表select query
  2. java类的运行顺序_Java语言类的基本运行顺序
  3. html页面在微信分享php,详解html静态页面实现微信分享思路的示例代码分析
  4. 软件测试工程师怎样有效记录缺陷(Bug)功能测试面试经常问到
  5. Python面向对象编程:类继承和其衍生术语
  6. 图十字链表并求度c语言,利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现...
  7. java 连续打印_Java实现连续打印ABC
  8. python抠图_python和opencv实现抠图
  9. 用Java语言编写ajax设计模式_使用JavaScript发布订阅设计模式实现Ajax请求节流
  10. 【c语言】蓝桥杯算法训练 简单加法(基本型)