Android开发系列6——项目中res详解

前言

  Android项目中的res(Resources)文件夹是项目的资源配置路径,Android系统会根据请求的资源:res——>存放文件类型文件目录+资源限配符——>文件名,简单流程如下:

Created with Raphaël 2.2.0资源文件引用res资源目录查找anim、drawable、values等文件根据设备匹配,优先级:<resources_name>-<config_qualifier>,查找到对应的资源资源引用yesno

接下来会详细介绍res目录下的资源文件,以及资源文件对应的资源限定符

一、资源文件介绍

Android系统res下会提供一些资源的目录,每种目录都对应存放不同的资源文件。

资源目录 对应资源目录存放类型
animation/ 用于定义属性动画的XML文件
anim/ 定义渐变动画的XML文件
color/ 用于定义颜色状态列表
drawable/ 位图文件(.png、.jpg、 .gif)状态列表、形状等
mipmap/ 不同启动图标密度的mipmap/用于App的icon、启动图片等
layout/ 用于定义用户界面布局
menu/ 用于定义应用菜单(选项菜单、上下文菜单或子菜单等)
raw/ 原始形式保存的任意文件
values/ 包含字符串、整形数和颜色等
xml/ 可以在运行时调用Resources.getXML()读取的任意XML文件

默认的Android项目res目录如下,可以根据需要再创建不同类型的资源文件。
res目录

二、资源限配符

Android由于大量的不同厂家的设备,为了更好的适配各种设备。Android系统提供了大量的资源限配符支持各种设备的适配。资源限配符如下:

优先级 配置 限定符号
1 MCC 移动国家代码,示例:mcc310、mcc310-mnc004、mcc208-mnc00等等
2 语言和地区 语言代码定义,示例:en、fr、en-rUS、fr-rFR、fr-rCA等等
3 布局方向(api-17 应用的布局方向,ldrtl 是指“布局方向从右到左”。ldltr 是指“布局方向从左到右”,这是默认的隐式值。
4 smallestWidth(api-13) 屏幕的基本尺寸,由可用屏幕区域的最小尺寸指定。swdp示例:sw320dp、sw600dp、sw720dp等等
5 可用宽度 指定资源应该使用的最小可用屏幕宽度。wdp示例:w720dp、w1024dp等等
6 可用高度 指定资源应该使用的最小可用屏幕高度。hdp示例:h720dp、h1024dp等等
7 屏幕尺寸 small(320x426 dp)、normal(320x470 dp)、large(480x640 dp)、xlarge(720x960 dp)
8 屏幕纵横比 long(宽屏)、notlong(非宽屏)
9 屏幕方向 port、land
10 UI 模式 car(车载手机座)、desk、television、appliancewatch
11 夜间模式 Night、notnight
12 屏幕像素密度 (dpi) ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi、nodpi、tvdpi
13 触摸屏类型 notouch:设备没有触摸屏、finger
14 键盘可用性 keysexposed:设备具有可用的键盘、keyshidden、keyssoft
15 主要文本输入法 nokeys:设备没有用于文本输入的硬按键、qwerty、12key
16 导航键可用性 Navexposed、navhidden
17 主要非触摸导航方法 Nonav、dpad、trackball、wheel
18 平台版本(API 级别) 示例:v3、v4、v7 等等

注意: 资源限定符是在不同的系统API基础之上,不断地增加。现在列举的通配符不是所有API版本都支持的,在开发过程中需要注意当前支持的API版本对应的 资源限配符

三、设备适配详细流程

  通过以上两点的描述,基本对Android设备的资源文件存放有了详细的了解。不同Android设备在运行时引用资源规则如下:

Created with Raphaël 2.2.0Android Devices查找与引用资源文件 对应的所有匹配的文件目录(文件目录+限定符)文件目录+限定符(优先级从高到低)列表ListA。优先级高的先读取,第一次读取ListA第一个最高优先级TempA,其他,根据上一次读取优先级下一级ListA列表的下一优先级文件夹TempA。如果读取到ListA最后问价夹还是没有资源文件,则读取失败读取TempA内资源文件是否存在获取资源文件成功结束yesno

总结

Android项目中设定的 资源文件+ 限配符主要是更好的适配所有全球各地的各个厂商出产的Android硬件设备,同时还有Android系统API的更新等情况,以上就是简单的介绍res内资源配置情况。

持续更新中……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章