android 资源文件类型,命名规则(配置限定符名称),及其加载规则
表 1. 项目 res/
目录中支持的资源目录。
目录 | 资源类型 |
---|---|
animator/
|
用于定义属性动画的 XML 文件。 |
anim/
|
用于定义渐变动画的 XML 文件。(属性动画也可保存在此目录中,但为了区分这两种类型,属性动画首选 animator/ 目录。)
|
color/
|
用于定义颜色状态列表的 XML 文件。请参阅颜色状态列表资源 |
drawable/
|
位图文件(
请参阅 Drawable 资源。 |
mipmap/
|
适用于不同启动器图标密度的可绘制对象文件。如需了解有关使用 mipmap/ 文件夹管理启动器图标的详细信息,请参阅管理项目概览。
|
layout/
|
用于定义用户界面布局的 XML 文件。请参阅布局资源。 |
menu/
|
用于定义应用菜单(如选项菜单、上下文菜单或子菜单)的 XML 文件。请参阅菜单资源。 |
raw/
|
需以原始形式保存的任意文件。如要使用原始 但是,如需访问原始文件名和文件层次结构,则可以考虑将某些资源保存在 |
values/
|
包含字符串、整型数和颜色等简单值的 XML 文件。 其他 由于每个资源均使用自己的 XML 元素进行定义,因此您可以随意命名文件,并在某个文件中放入不同的资源类型。但是,您可能需要将独特的资源类型放在不同的文件中,使其一目了然。例如,对于可在此目录中创建的资源,下面给出了相应的文件名约定:
请参阅字符串资源、样式资源和更多资源类型。 |
xml/
|
可在运行时通过调用 Resources.getXML() 读取的任意 XML 文件。各种 XML 配置文件(如可搜索配置)都必须保存在此处。
|
font/
|
带有扩展名的字体文件(如 .ttf 、.otf 或 .ttc ),或包含 <font-family> 元素的 XML 文件。如需详细了解作为资源的字体,请参阅 XML 中的字体。
|
表 2. 配置限定符名称。
配置 | 限定符值 | 描述 |
---|---|---|
MCC 和 MNC |
示例:mcc310 mcc310-mnc004 mcc208-mnc00 等等 |
移动设备国家代码 (MCC),(可选)后跟设备 SIM 卡中的移动设备网络代码 (MNC)。例如, 如果设备使用无线装置连接(GSM 手机),则 MCC 和 MNC 值均来自 SIM 卡。 您也可以单独使用 MCC(例如,将国家/地区特定的合法资源加入应用)。如果只需根据语言指定,则改用语言和地区限定符(稍后进行介绍)。如果决定使用 MCC 和 MNC 限定符,请谨慎执行此操作并测试限定符是否按预期工作。 另请参阅配置字段 |
语言和区域 |
示例:en fr en-rUS fr-rFR fr-rCA b+en b+en+US b+es+419
|
语言通过由两个字母组成的 ISO 639-1 语言代码进行定义,可以选择后跟两个字母组成的 ISO 3166-1-alpha-2 区域码(前缀用小写字母 这些代码不区分大小写; Android 7.0(API 级别 24)引入对 BCP 47 语言标记的支持,可供您用来限定特定语言和区域的资源。语言标记由一个或多个子标记序列组成,每个子标记都能优化或缩小由整体标记标识的语言范围。如需了解有关语言标记的详细信息,请参阅用于标识语言的标记。 如要使用 BCP 47 语言标记,请将 如果用户在系统设置中更改语言,则语言标记可能会在应用的生命周期中发生变更。如需了解运行时应用会因此受到何种影响,请参阅处理运行时变更。 有关针对其他语言本地化应用的完整指南,请参阅本地化。 另请参阅 |
布局方向 |
ldrtl ldltr
|
应用的布局方向。 此配置适用于布局、可绘制资源或值等任何资源。 例如,若要针对阿拉伯语提供某种特定布局,并针对任何其他“从右到左”的语言(如波斯语或希伯来语)提供某种通用布局,则可提供以下资源:
请注意:如要为应用启用从右到左的布局功能,则必须将 此项为 API 级别 17 中的新增配置。 |
smallestWidth |
sw<N>dp
示例: |
屏幕的基本尺寸,由可用屏幕区域的最小尺寸指定。具体而言,设备的 smallestWidth 是屏幕可用高度和宽度的最小尺寸(您也可将其视为屏幕的“最小可能宽度”)。无论屏幕的当前方向如何,您均可使用此限定符确保应用界面的可用宽度至少为 例如,如果布局要求屏幕区域的最小尺寸始终至少为 600dp,则可使用此限定符创建布局资源 使用最小宽度确定一般屏幕尺寸非常有用,因为宽度通常是设计布局时的驱动因素。界面经常会垂直滚动,但对其水平方向所需要的最小空间具有非常硬性的限制。可用宽度也是确定是否对手持式设备使用单窗格布局,或对平板电脑使用多窗格布局的关键因素。因此,您可能最关注每台设备上的最小可能宽度。 设备的最小宽度会将屏幕装饰元素和系统界面考虑在内。例如,如果设备屏幕上的某些永久性界面元素沿着最小宽度轴占据空间,则系统会声明最小宽度小于实际屏幕尺寸,因为这些屏幕像素不适用于您的界面。 以下是一些可用于常见屏幕尺寸的值:
当应用为多个资源目录提供不同的 smallestWidth 限定符值时,系统会使用最接近(但未超出)设备 smallestWidth 的值。 此项为 API 级别 13 中的新增配置。 另请参阅 如需了解有关不同屏幕设计和使用此限定符的详细信息,请参阅支持多种屏幕开发者指南。 |
可用宽度 |
w<N>dp
示例: |
指定资源应使用的最小可用屏幕宽度(以 此功能往往有助于确定是否使用多窗格布局,因为即便在使用平板电脑设备时,您通常也不希望竖屏以横屏的方式使用多窗格布局。因此,您可以使用此功能指定布局所需的最小宽度,而无需同时使用屏幕尺寸和屏幕方向限定符。 应用为此配置提供具有不同值的多个资源目录时,系统会使用最接近(但未超出)设备当前屏幕宽度的值。此处的值会考虑屏幕装饰元素,因此如果设备显示屏的左边缘或右边缘上有一些永久性 UI 元素,考虑到这些 UI 元素,同时为减少应用的可用空间,设备会使用小于实际屏幕尺寸的宽度值。 此项为 API 级别 13 中的新增配置。 另请参阅 如需了解有关不同屏幕设计和使用此限定符的详细信息,请参阅支持多种屏幕开发者指南。 |
可用高度 |
h<N>dp
示例: |
指定资源应使用的最小可用屏幕高度(以“dp”为单位,由 对比使用此方式定义布局所需高度与使用 当应用为此配置提供具有不同值的多个资源目录时,系统会使用最接近(但未超出)设备当前屏幕高度的值。此处的值会考虑屏幕装饰元素,因此如果设备显示屏的上边缘或下边缘上有一些永久性 UI 元素,考虑到这些 UI 元素,同时为减少应用的可用空间,设备会使用小于实际屏幕尺寸的高度值。非固定的屏幕装饰元素(例如,全屏时可隐藏的手机状态栏)并不在考虑范围内,标题栏或操作栏等窗口装饰亦如此,因此应用必须准备好处理稍小于其指定值的空间。 此项为 API 级别 13 中的新增配置。 另请参阅 如需了解有关不同屏幕设计和使用此限定符的详细信息,请参阅支持多种屏幕开发者指南。 |
屏幕尺寸 |
small normal large xlarge
|
请注意:使用尺寸限定符并不表示资源仅适用于该尺寸的屏幕。如果没有为备用资源提供最符合当前设备配置的限定符,则系统可能会使用其中最匹配的资源。 注意:如果所有资源均使用大于当前屏幕的尺寸限定符,则系统不会使用这些资源,并且应用将在运行时崩溃(例如,如果所有布局资源均以 此项为 API 级别 4 中的新增配置。 如需了解详细信息,请参阅支持多种屏幕。 另请参阅 |
屏幕纵横比 |
long notlong
|
此项为 API 级别 4 中新增配置。 此配置完全基于屏幕的纵横比(宽屏较宽),并且与屏幕方向无关。 另请参阅 |
圆形屏幕 |
round notround
|
此项为 API 级别 23 中的新增配置。 另请参阅 |
广色域 |
widecg nowidecg
|
此项为 API 级别 26 中的新增配置。 另请参阅 |
高动态范围 (HDR) |
highdr lowdr
|
此项为 API 级别 26 中的新增配置。 另请参阅 |
屏幕方向 |
port land
|
如果用户旋转屏幕,此配置可能会在应用生命周期中发生变化。如需了解这会在运行时期间给应用带来哪些影响,请参阅处理运行时变更。 另请参阅 |
界面模式 |
car desk television appliance watch vrheadset
|
此项为 API 级别 8 中的新增配置,API 13 中的新增电视配置,API 20 中的新增手表配置。 如需了解应用在设备插入基座或从中移除时的响应方式,请阅读确定并监控插接状态和类型。 如果用户将设备插入基座,此配置可能会在应用生命周期中发生变化。您可以使用 |
夜间模式 |
night notnight
|
此项为 API 级别 8 中的新增配置。 如果夜间模式停留在自动模式(默认),此配置可能会在应用生命周期中发生变化。在此情况下,该模式会根据当天的时间进行调整。您可以使用 |
屏幕像素密度 (dpi) |
ldpi mdpi hdpi xhdpi xxhdpi xxxhdpi nodpi tvdpi anydpi nnndpi
|
六个基本密度之间的缩放比为 3:4:6:8:12:16(忽略 tvdpi 密度)。因此,9x9 (ldpi) 位图相当于 12x12 (mdpi)、18x18 (hdpi)、24x24 (xhdpi) 位图,依此类推。 如果您认为图像资源在电视或其他某些设备上的呈现效果不够好,进而想尝试使用 tvdpi 资源,则缩放系数应为 1.33*mdpi。例如,mdpi 屏幕的 100px x 100px 图像应相当于 tvdpi 屏幕的 133px x 133px 图像。 请注意:使用密度限定符并不表示资源仅适用于该密度的屏幕。如果没有为备用资源提供最符合当前设备配置的限定符,则系统可能使用其中最匹配的资源。 如需详细了解如何处理不同屏幕密度以及 Android 如何缩放位图以适应当前密度,请参阅支持多种屏幕。 |
触摸屏类型 |
notouch finger
|
另请参阅 |
键盘可用性 |
keysexposed keyshidden keyssoft
|
如果您提供了 如果用户打开硬键盘,此配置可能会在应用生命周期中发生变化。如需了解这会在运行时期间给应用带来哪些影响,请参阅处理运行时变更。 另请参阅配置字段 |
主要的文本输入法 |
nokeys qwerty 12key
|
另请参阅 |
导航键可用性 |
navexposed navhidden
|
如果用户显示导航键,此配置可能会在应用生命周期中发生变化。如需了解这会在运行时期间给应用带来哪些影响,请参阅处理运行时变更。 另请参阅 |
主要的非触摸导航方法 |
nonav dpad trackball wheel
|
另请参阅 |
平台版本(API 级别) |
示例:v3 v4 v7 等等 |
设备支持的 API 级别。例如, |
限定符命名规则
以下是一些关于使用配置限定符名称的规则:
- 您可以为单组资源指定多个限定符,并使用短划线分隔。例如,
drawable-en-rUS-land
适用于屏幕方向为横向的美国英语设备。 - 这些限定符必须遵循表 2 中列出的顺序。例如:
- 错误:
drawable-hdpi-port/
- 正确:
drawable-port-hdpi/
- 错误:
- 不能嵌套备用资源目录。例如,您的目录不能为
res/drawable/drawable-en/
。 - 值不区分大小写。在处理之前,资源编译器会将目录名称转换为小写,以免不区分大小写的文件系统出现问题。名称中使用的所有大写字母只是为了便于认读。
- 每种限定符类型仅支持一个值。例如,若要对西班牙语和法语使用相同的可绘制对象文件,则您不能拥有名为
drawable-rES-rFR/
的目录,而是需要两个包含相应文件的资源目录,如drawable-rES/
和drawable-rFR/
。然而,您实际无需在两处复制相同的文件。相反,您可以创建指向资源的别名。请参阅下面的创建别名资源。
Android 如何查找最佳匹配资源
当您请求要为其提供备用资源的资源时,Android 会根据当前的设备配置选择要在运行时使用的备用资源。为演示 Android 如何选择备用资源,假设以下可绘制对象目录分别包含相同图像的不同版本:
drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/
同时,假设设备配置如下:
语言区域 = en-GB
屏幕方向 = port
屏幕像素密度 = hdpi
触摸屏类型 = notouch
主要文本输入法 = 12key
通过将设备配置与可用的备用资源进行比较,Android 会从 drawable-en-port
中选择可绘制对象。
系统使用以下逻辑决定要使用的资源:
图 2. Android 如何查找最佳匹配资源的流程图。
- 淘汰与设备配置冲突的资源文件。
drawable-fr-rCA/
目录与en-GB
语言区域冲突,因而被淘汰。drawable/ drawable-en/ drawable-fr-rCA/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
例外:屏幕像素密度是唯一一个未因冲突而被淘汰的限定符。尽管设备的屏幕密度为 hdpi,但是
drawable-port-ldpi/
未被淘汰,因为此时每个屏幕密度均视为匹配。如需了解详细信息,请参阅支持多种屏幕文档。 - 选择列表(表 2)中(下一个)优先级最高的限定符。(从 MCC 开始,然后向下移动。)
- 是否有资源目录包含此限定符?
- 若无,请返回到第 2 步,看看下一个限定符。(在该示例中,除非到达语言限定符,否则答案始终为“否”。)
- 若有,请继续执行第 4 步。
- 淘汰不含此限定符的资源目录。在该示例中,系统会淘汰所有不含语言限定符的目录:
drawable/ drawable-en/ drawable-en-port/ drawable-en-notouch-12key/ drawable-port-ldpi/ drawable-port-notouch-12key/
例外:如果问题中的限定符是屏幕像素密度,则 Android 会选择最接近设备屏幕密度的选项。一般来说,Android 偏向于缩小较大的原始图像,而非放大较小的原始图像。请参阅支持多种屏幕。
- 返回并重复第 2 步、第 3 步和第 4 步,直到仅剩一个目录为止。在此示例中,屏幕方向是下一个判断是否匹配的限定符。因此,系统会淘汰未指定屏幕方向的资源:
drawable-en/ drawable-en-port/ drawable-en-notouch-12key/
剩下的目录是
drawable-en-port
。
尽管系统会对所请求的每个资源执行此程序,但是其仍会对某些方面做进一步优化。例如,已知设备配置后,系统会淘汰可能永远无法匹配的备用资源。比如,如果配置语言是英语(“en”),则系统绝不会将语言限定符设置为非英语的任何资源目录加入选中的资源池(不过,仍会将不带语言限定符的资源目录加入该池)。
在根据屏幕尺寸限定符选择资源时,如果没有更好的匹配资源,则系统将使用专为小于当前屏幕的屏幕而设计的资源(例如,必要时,大尺寸屏幕将使用标准尺寸的屏幕资源)。但是,如果唯一可用的资源大于当前屏幕,则系统不会使用这些资源,并且如果没有其他资源与设备配置匹配,应用将会崩溃(例如,如果所有布局资源均用 xlarge
限定符标记,但设备是标准尺寸的屏幕)。
android 资源文件类型,命名规则(配置限定符名称),及其加载规则相关推荐
- 配置好框架后,资源文件如CSS样式、图片image、JS加载不了的解决方案
今天,前端的同学把JSP页面发给我后,叫我集成SSM框架,哐哐哐,把配置文件写好后,运行,duang! 右键查看源代码,随便点击一个资源文件的链接,404! 资源文件加载不了!! 慌了好久,找到了几种 ...
- Android屏幕适配-资源文件夹命名与匹配规则
Table 2. Configuration qualifier names. Configuration Qualifier Values Description 说明:本文档目的为分析androi ...
- android调用资源文件配置,Android资源文件
应用资源是指应用中与源代码分离的资源,如图像.音频文件以及任何与应用的视觉呈现有关的内容.在Android项目中的每一项资源,SDK构建工具都会定义一个唯一的整形ID,可以通过ID对资源进行应用.提供 ...
- android h文件是什么文件,Android 资源文件
Android 资源文件 应用资源是指应用中与源代码分离的资源, 如图像, 音频文件以及任何与应用的视觉呈现有关的内容. 在 Android 项目中的每一项资源, SDK 构建工具都会定义一个唯一的整 ...
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...
- 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组...
. 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...
- Android资源文件在配置文件中的使用
Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID,所以访问这种资源文件比较简单,通过R.XXX.ID ...
- Android 中文件类型与MIME的匹配表
Android 中文件类型与MIME的匹配表 转载于:https://www.cnblogs.com/zhujiabin/p/5669008.html
- android判断文件类型是否为音频文件
android 中判断音频文件类型,通常有两种做法.一种是根据音频文件扩展名,这是最常用.最简单的方法:另一种是判断音频 文件头 信息,也是最准确的办法. 在Android系统内部提供了根据 文件名 ...
最新文章
- page_index--template.html(0)源码
- system.out.println从什么方向执行
- ABAP 选择屏幕上添加按钮,按钮上添加文字和图片
- php实现斐波那契数列
- Django购物网站使用说明
- Mongodb 账户权限配置
- Python内置函数int()高级用法
- excel表格不够怎么添加_做出来的Excel表格乱七八糟,不够清晰?学会思路就简单多了...
- PAT 1005 继续(3n+1)猜想
- 懒人精灵节点工具使用
- 【剑指Offer速刷与技巧笔记】剑指Offer重点面试刷题
- codeblocks下载
- 130多个免费接口全部开放,涵盖天气数据、环境数据、旅游景点数据、位置数据、雷达、云图等等,可在线直接提供服务,免费的服务接口
- python语言绘制词云图
- 【Pygame实战】这游戏有毒,刷爆朋友圈:小编已与病毒版贪吃蛇大战了三百回合,最高分339?
- 大厂社区、知名技术博主,学习连接看这里,全!!!
- 第二节 物料清单(BOM)
- [翼灵物联网工作室例会分享]
- batocera 完整包_Batocera Plus 2.0 中文整合版bt下载 8G和150G
- SpringMvc、Spring和Mybatis整合(SSM框架整合)