Android 应用资源概览

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。

目录

  • 一、导读
  • 二、概览
  • 三、资源类型分组
  • 四、配置限定符名称表
  • 五、限定符命名规则
  • 六、 推荐阅读

在这里插入图片描述

一、导读

我们继续总结学习Android 基础知识,温故知新。

资源是指代码使用的附加文件和静态内容,例如位图、布局定义、界面字符串、动画说明等。

本文档介绍了如何对 Android 项目中的资源进行分组。此外,还介绍了如何为特定设备配置提供备用资源,以及如何从您的应用代码或其他 XML 文件访问这些资源。

二、概览

在项目中有一个 res 文件夹, 里面包含所有资源,在这个文件夹下,再根据每种类型的资源新建不同的目录来存放不同类型的资源。

三、资源类型分组

根据资源的类型,我们大致可以分成以下几种:

目录资源类型
animator用于定义属性动画的 XML 文件。
anim用于定义补间动画的 XML 文件。属性动画也可保存在此目录中,但为了区分这两种类型,属性动画首选 animator/ 目录。
color定义颜色状态列表的 XML 文件。如需了解详情,请参阅 ColorStateList。
drawable位图文件(PNG、.9.png、JPG 或 GIF)或编译为以下可绘制资源子类型的 XML 文件
mipmap适用于不同启动器图标密度的可绘制对象文件。如需详细了解如何使用 mipmap 文件夹管理启动器图标,请参阅将应用图标放在 mipmap 目录中。
layout用于定义界面布局的 XML 文件。如需了解详情
menu用于定义应用菜单(例如选项菜单、上下文菜单或子菜单)的 XML 文件。
raw需以原始形式保存的任意文件。如要使用原始 InputStream 打开这些资源,请使用资源 ID(即 R.raw.filename)调用 Resources.openRawResource()。但是,如需访问原始文件名和文件层次结构,请考虑将资源保存在 assets 目录(而非 res/raw)下。assets 中的文件没有资源 ID,因此您只能使用 AssetManager 读取这些文件。
values包含字符串、整数和颜色等简单值的 XML 文件。values 目录中的文件可描述多个资源。对于此目录中的文件, 元素的每个子元素均会定义一个资源。例如, 元素会创建 R.string 资源, 元素会创建 R.color 资源。
xml可在运行时通过调用 Resources.getXML() 读取的任意 XML 文件。各种 XML 配置文件(例如搜索配置)都必须保存在此处。
font带有扩展名的字体文件(例如 TTF、OTF 或 TTC),或包含 元素的 XML 文件。如需详细了解以资源形式使用的字体,请参阅将字体添加为 XML 资源。

四、配置限定符名称表

如果需要适配不同的设备,我们的资源也要适配多套, 其命名格式如下:

<resources_name>-<qualifier>

<resources_name> 是相应默认资源的目录名称(如上面表格 中所定义 values , drawable)。
<qualifier> 是指定要使用这些资源的各个配置的名称(如表 下表 中所定义),可以追加多个 <qualifier>,并使用短划线进行分隔。

drawable-hdpi
drawable-night-hdpi
限定符值配置说明
MCC 和 MNC移动设备国家/地区代码 (MCC),(可选)后跟设备 SIM 卡中的移动设备网络代码 (MNC)。示例:mcc310、mcc310-mnc004、mcc208-mnc00
en、fr等等语言、脚本(可选)和区域(可选),用于应用本地化
ldrtl、ldltr应用的布局方向,ldrtl 是指“布局方向从右到左”。ldltr 是指“布局方向从左到右”(默认的隐式值)。
swdp最小宽度,应用可用屏幕区域的最短尺寸,示例:sw320dp、sw600dp、sw720dp等等
wdp、hdp可用宽度和高度,指定资源使用的最小可用屏幕宽度或高度(以 dp 为单位,由 值定义),示例:、w720dp、w1024dp、h720dp、h1024dp等等
small、normal、large、xlarge屏幕尺寸
long、notlong屏幕宽高比
round、notround圆形屏幕
widecg、nowidecg广色域
highdr、lowdr高动态范围 (HDR)
port、land屏幕方向
car、desk、television、appliance、watch、vrheadset界面模式,如车载、桌面、电视、不带显示屏的、手表、虚拟现实耳机
night、notnight夜间模式
ldpi、mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi、nodpi、tvdpi、anydpi、nnndpi屏幕像素密度 (dpi)
notouch、finger触摸屏类型,如设备没有触摸屏、设备有一个专供用户通过手指直接与其交互的触摸屏
keysexposed、keyshidden、keyssoft键盘可用性
nokeys、qwerty、12key主要的文本输入法
navexposed、navhidden导航键可用性
v3、v4、v7等等平台版本(API 级别),设备支持的 API 级别。例如,v1 对应 API 级别 1(搭载 Android 1.0 或更高版本的设备);v4 对应 API 级别 4(搭载 Android 1.6 或更高版本的设备)。如需了解有关这些值的详细信息,请参阅 Android API 级别文档。
- ldpi:低密度屏幕;约为 120 dpi。
- mdpi:中密度(传统 HVGA)屏幕;约为 160 dpi。
- hdpi:高密度屏幕;约为 240 dpi。
- xhdpi:超高密度屏幕;约为 320 dpi。此项为 API 级别 8 中的新增配置。
- xxhdpi:超超高密度屏幕;约为 480 dpi。此项为 API 级别 16 中的新增配置。
- xxxhdpi:超超超高密度屏幕使用(仅限启动器图标,请参阅支持不同的像素密度);约为 640 dpi。此项为 API 级别 18 中的新增配置。

这六种主要密度之间的缩放比例为 3:4:6:8:12:16(tvdpi 密度忽略不计)。因此,9x9 (ldpi) 位图相当于 12x12 (mdpi)、18x18 (hdpi)、24x24 (xhdpi) 位图,依此类推。

- nodpi:用于您不希望为匹配设备密度而进行缩放的位图资源。
- tvdpi:密度介于 mdpi 和 hdpi 之间的屏幕;约为 213 dpi。这不属于“主要”密度组。它主要用于电视,而大多数应用都不需要它。对于大多数应用而言,提供 mdpi 和 hdpi 资源便已足够,系统将视情况对其进行缩放。此项为 API 级别 13 中的新增配置。
- anydpi:适合所有屏幕密度,其优先级高于其他限定符。这对于矢量可绘制对象非常有用。此项为 API 级别 21 中的新增配置。
- nnndpi:用于表示非标准密度,其中 nnn 是正整数屏幕密度。大多数情况下不使用此限定符。使用标准密度存储分区,可显著减少因支持市场上各种设备屏幕密度而产生的开销。

五、限定符命名规则

以下是一些使用配置限定符名称时需遵循的规则:

  • 可以为单组资源指定多个限定符,并使用短划线分隔。例如,drawable-en-rUS-land 适用于屏幕方向为横向且语言为美式英语的设备。
  • 这些限定符必须遵循上面表 中列出的顺序。
错误:drawable-hdpi-port
正确:drawable-port-hdpi
  • 不得嵌套备用资源目录。例如,您的目录不能为 res/drawable/drawable-en/。
  • 值不区分大小写。
  • 每种限定符类型仅支持一个值。
错误:drawable-es-fr
正确:drawable-es 和 drawable-fr

google网站

六、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

ddd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/210999.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Unity入门】声音组件AudioSource简介及实现声音的近大远小

AudioSource组件 将需要播放声音的物体挂载Audio Listener组件&#xff0c;实现声音的播放 AudioSource组件属性 &#xff08;1&#xff09;AudioClip&#xff08;音频剪辑&#xff09;&#xff1a;指定播放的音频文件。 &#xff08;2&#xff09;Output&#xff08;音频输…

Paxos 算法

Paxos 算法 介绍 Paxos 算法是第一个被证明完备的分布式系统共识算法。共识算法的作用是让分布式系统中的多个节点之间对某个提案&#xff08;Proposal&#xff09;达成一致的看法。提案的含义在分布式系统中十分宽泛&#xff0c;像哪一个节点是 Leader 节点、多个事件发生的…

使用mybatis-plus框架:@Autowired报错Could not autowire. No beans of ‘XXX‘ type found

使用mybatis-plus框架,使用xxmapper报错&#xff1a; 解决办法是&#xff1a;在mapper中添加注解&#xff1a; Repository Mapper 也可以使用 AutowiredSysRoleMenuService sysRoleMenuService;替代 AutowiredSysRoleMenuMapper sysRoleMenuMapper;方法名不同&#xff0c;但…

RHCE学习笔记(RHEL8) - RH294

Chapter Ⅰ 介绍Ansible ansible ansible是一款开源自动化平台 ansible围绕一种无代理架构构建&#xff0c;在控制节点上安装ansible&#xff0c;且客户端不需要任何特殊的代理软件&#xff1b;ansible使用SSH等标准协议连接受管主机&#xff0c;并在受管主机上运行代码或命令来…

【嵌入式-51单片机】常见位运算和数据类型

51单片机中 数据类型如下&#xff1a; 位运算符如下&#xff1a; 按位左移<<&#xff1a;低位补零&#xff0c;高位移出 按位右移>>&#xff1a;高位补零&#xff0c;低位移出 按位与&&#xff1a;对应位上的值必须同时为1才为1&#xff0c;可以用来对指定位…

鸿蒙学习之TypeScript 语法理解笔记

1、变量及数据类型 // string&#xff1a;字符串&#xff0c;单引号或双引号 let msg : string hello wprld console.log(msg:msg)// number&#xff1a;数值、整数、浮点let num :number 21console.log(num:num)//boolean&#xff1a;布尔let finished: boolean truecons…

HarmonyOS 开发案例分享:万能卡片也能用来玩游戏

一、前言 作为一名开发爱好者&#xff0c;从大了讲&#xff0c;我学习并进行 HarmonyOS 相关开发是为了能为鸿蒙生态建设尽一份绵薄之力&#xff0c;从小了讲&#xff0c;就是为了自己的兴趣。而万能卡片是一个让我非常感兴趣的东西。 很多时候我跟别人解释什么是万能卡片&…

Redis SDS 源码

底层数据结构的好处&#xff1a; 杜绝缓冲区溢出。减少修改字符串长度时所需的内存重分配次数。二进制安全。兼容部分C字符串函数。 常用命令&#xff1a; set key value、get key 等 应用场景&#xff1a;共享 session、分布式锁&#xff0c;计数器、限流。 1、给char*定义…

【排序】直接插入排序和希尔排序

目录 一、排序思想 1、直接插入排序 2、希尔排序 二、代码实现 三、性能比较 四、排序总结 1、直接插入排序 2、希尔排序 一、排序思想 1、直接插入排序 基本思想&#xff1a;把待排序的序列选取一个整数逐个插入到已经排好的有序序列中&#xff0c;直到所有整数都插入…

Unity 下载网络图片的方法,并把图片赋值给UI和物体的方法

Unity 下载网络图片的方法&#xff0c;可使用WWW类或UnityWebRequest类&#xff0c;其中UnityWebRequest是新版的方法。 通常我们下载图片都会转成Texture&#xff0c;然后赋值给UI或者物体。 具体实现方法&#xff1a; using System.Collections; using System.Collections…

P1 什么是链表 C语言简单易懂

目录 前言 01 什么是链表 02 数组的特点 03 数组的缺点 3.1 删除数组其中一个元素 3.2 数组增加某个节点 04 链表 前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《 C 》✨✨✨ &#x1f525; 推荐专栏2: 《 Linux C应用编程&#xff08;概念…

国际语音群呼系统

随着海外电话营销的发展&#xff0c;越来越多的出海企业通过国际语音群呼系统打开出海营销之路。企业出海营销运营&#xff0c;选择一个安全、高效、便捷的国际语音群呼系统非常重要。 一、什么是国际语音群呼系统&#xff1f; 国际语音群呼是指通过语音的方式批量向海外用户传…

【设计模式-4.1】行为型——策略模式

说明&#xff1a;本文介绍设计模式中的行为型设计模式中的&#xff0c;策略模式&#xff1b; 计算器 策略模式属于行为型设计模式&#xff0c;关注对象的行为。例如&#xff0c;目前有一个计算器类&#xff0c;可对两个数进行加减计算&#xff0c;如下&#xff1a; &#xf…

中国湖泊面积-水位长时序数据产品(2000-2020)

今天我们分享中国湖泊面积-水位长时序数据产品&#xff08;2000-2020&#xff09; 该数据集包含中国典型湖泊2000-2020年最大水体面积、多年平均面积、水位变化速率及空间分布矢量。 数据溯源信息 「数据来源描述」Landsat、HJ、ZY、Jason、ENVISAT、Cryosat、ICESat和HY 「数…

【Linux】信号概念和信号的产生

文章目录 一、什么是信号&#xff1f;1.signal系统调用2.从硬件解析键盘数据如何输入给内核3.同步和异步 二、信号的产生1.键盘组合键2. kill命令3.系统调用接口3.1kill3.2 raise3.3abort 4.异常5.软件条件 重谈core dump标志位 一、什么是信号&#xff1f; 以日常为例&#x…

lv11 嵌入式开发 中断处理 15

前言&#xff1a;中断属于7种异常的1种&#xff0c;这节主要讲CPU接收到中断之后怎么处理&#xff0c;回顾之前的知识。 目录 1 异常 1.1 概念 1.2 异常处理机制 1.3 ARM异常源 1.4 异常模式 1.5 ARM异常响应 1.6 异常向量表 1.7 异常返回 ​编辑 1.8 IRQ异常举例 …

Android 缩减、混淆处理和优化应用

为了尽可能减小应用的大小&#xff0c;您应在发布 build 中启用缩减功能来移除不使用的代码和资源。启用缩减功能后&#xff0c;您还会受益于两项功能&#xff0c;一项是混淆处理功能&#xff0c;该功能会缩短应用的类和成员的名称&#xff1b;另一项是优化功能&#xff0c;该功…

无效的目标发行版: 21 和springboot爆错

目录 问题描述 原因分析&#xff1a; 问题描述 springboot爆红 调整一下这个&#xff1a;把这里的version调低一点应该就可以了 无效的目标发行版: 21 调整一下这个把这里的Java version调整一下&#xff0c;我是调整到1.8&#xff08;其他没有试过&#xff09; 原因分析&a…

基于ASP的购物网站设计

摘 要 随着计算机科学的不断发展和网络的迅速普及&#xff0c;Internet 的应用已经涉及到人们生活的方方面面&#xff0c;越来越多的现代企业也意识到了这一点&#xff0c;如何在当前的网络大发展的背景下开拓市场已经成为了企业关注的重中之重。总的来说&#xff0c;互联网的…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(七)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…