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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

口罩标准讲解及推荐

一、我国医用口罩质量标准 1、YY/T0969-2013《一次性使用医用口罩》 2、YY0469-2011《医用外科口罩》 3、GB19083-2010《医用防护口罩技术要求》三类医用口罩各项指标对比如下&#xff1a; 结论&#xff1a;防护效果来说&#xff1a;医用防护口罩>医用外科口罩>一次性…

【交换排序 简单选择排序 堆排序 归并排序】

文章目录 交换排序简单选择排序堆排序归并排序 交换排序 冒泡排序的算法分析&#xff1a; 冒泡排序最好的时间复杂度是O&#xff08;n&#xff09;冒泡排序最好的时间复杂度是O&#xff08;n平方&#xff09;冒泡排序平均时间复杂度为O&#xff08;n的平方&#xff09;冒泡排…

02数仓平台Zookeeper

概述 ZooKeeper是一种分布式协调服务&#xff0c;用于管理大型主机集。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑&#xff0c;而不必担心应用程序的分布式性质。 Zookeepe…

基于springboot,vue高校图书馆管理系统

开发工具&#xff1a;IDEA 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 系统分前后台&#xff0c;项目采用前后端分离 前端技术&#xff1a;vueelementUI 服务端技术&#xff1a;springbootmybatisredis 本项…

Kubernetes集群部署—部署Master 节点 (三)

文章目录 1 生成kube-apiserver证书 &#xff08;master节点操作&#xff09;1.1 自签证书颁发机构&#xff08;CA&#xff09;1.2 使用自签CA签发kube-apiserver HTTPS证书 2 从Github下载二进制文件3 解压二进制包 &#xff08;master节点操作&#xff09;4 部署kube-apiserv…

【开源视频联动物联网平台】JAIN-SIP库写一个SIP服务器

JAIN-SIP&#xff08;Java API for Integrated Networks - Session Initiation Protocol&#xff09;是用于实现SIP&#xff08;Session Initiation Protocol&#xff09;的Java API。以下是使用JAIN-SIP库编写一个简单的SIP服务器的基本步骤&#xff1a; 1.添加JAIN-SIP库依赖…

华为OD机试真题-求最多可以派出多少支团队-2023年OD统一考试(C卷)

题目描述: 用数组代表每个人的能力,一个比赛活动要求参赛团队的最低能力值为N,每个团队可以由1人或2人组成,且1个人只能参加1个团队,请计算出最多可以派出多少支符合要求的团队? 输入描述: 5 3 1 5 7 9 8 第一行数组代表总人数,范围[1,500000] 第二行数组代表每个人的能…

[Rust] 快速基础入门教程

Rust 是一个无运行时的强类型语言, 包含很多高级特性, 例如泛型, lambda 等. 又因为其独有的所有权机制, 所以 Rust 的内存安全要比 C 完善许多. 风格 Rust 与 C 族语言不一样, C 族语言在定义方法, 变量时, 都是 类型 关键字 这样的格式, 也就是类型前置. Rust 采用的是类型后…

如何使用Go与MQTT进行通信

简介 本文介绍了如何使用 Go 编程语言与 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;进行通信。MQTT 是一种轻量级的消息传输协议&#xff0c;广泛应用于物联网和实时通信场景。通过本文的指导&#xff0c;您将学习如何使用 Go 语言创建 MQTT 客户端&am…

MySQL更改用户权限

如果之前已经为一个用户设置了 localhost 作为主机名&#xff0c;并且现在想将其改为 %&#xff08;表示允许该用户从任何主机连接&#xff09;&#xff0c;可以按照以下步骤操作&#xff1a; 登录 MySQL&#xff1a; 首先&#xff0c;使用 root 用户或其他具有管理员权限的用户…

【哈希】字母异位词分组

力扣 class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> map new HashMap<>();for (String str : strs) {String hash getHash(str);map.computeIfAbsent(hash, k -> new ArrayList<…

[英语学习][6][Word Power Made Easy]的精读与翻译优化

[序言] 针对第18页的阅读, 进行第二次翻译优化以及纠错, 这次译者的翻译出现的严重问题: 没有考虑时态的变化导致整个翻译跟上下文脱节, 然后又有偷懒的嫌疑, 翻译得很随意. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西,…

PTA:过滤重复整数

题干 本题要求实现一个函数&#xff0c;删去给定整数数组中的重复整数&#xff0c;不重复的元素放于原数组中&#xff0c;不要改变原来的次序。该函数返回不重复的整数个数。 函数接口定义&#xff1a; 函数原型为&#xff1a; int Unique_Int ( int a[ ], int n ); 其中 a[ …

2023年12月03日新闻简报(国内国际)

新闻简报 每天三分钟&#xff0c;朝闻天下事。今天是&#xff1a;2023年12月03日&#xff0c;星期日&#xff0c;农历十月廿一&#xff0c;祝工作愉快&#xff0c;身体健康&#xff0c;生活喜乐&#xff1a; &#x1f449;&#x1f449;国内新闻 1、1日凌晨&#xff0c;四川…

OpenCV技术应用(6)— 暖色滤镜和冷色滤镜

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。本节课就手把手教大家如何将一幅图像转化成暖色滤镜和冷色滤镜&#xff0c;希望大家学习之后能够有所收获~&#xff01;&#x1f308; 目录 &#x1f680;1.技术介绍 &#x1f680;2.暖色滤镜 &#x1f680;3.冷色滤…

SpringBoot 是如何启动一个内置的Tomcat

为什么说Spring Boot框架内置Tomcat 容器,Spring Boot框架又是怎么样去启动Tomcat的?我简单总结下学习过程。 一:简单了解SpringBoot的启动类 我们都知道Spring Boot框架的启动类上是需要使用 @SpringBootApplication 注解标注的, @SpringBootApplication 是一个复合注解…

循环神经网络训练情感分析

文章目录 1 循环神经网络训练情感分析2 完整代码3 代码详解 1 循环神经网络训练情感分析 下面介绍如何使用长短记忆模型&#xff08;LSTM&#xff09;处理情感分类LSTM模型是循环神经网络的一种&#xff0c;按照时间顺序&#xff0c;把信息进行有效的整合&#xff0c;有的信息…

第16章:随堂复习与企业真题(网络编程)

第16章&#xff1a;随堂复习与企业真题&#xff08;网络编程&#xff09; 一、随堂复习 1. 网络编程概述 计算机网络&#xff1a;略网络编程的目的&#xff1a;直接或间接地通过网络协议与其它计算机实现数据交换&#xff0c;进行通讯。需要解决的三个问题&#xff1a; 问题1…

FL Studio(水果软件)2024最新中文版云盘下载

如今&#xff0c;越来越多的音乐人选择使用音乐制作软件来进行音乐的创作&#xff0c;一台电脑、一款软件以及一个外接MIDI就是一个小型的音乐工作站。FL Studio成了音乐界萌新的首选&#xff0c;目前最新的版本为FL Studio2024版本。 你可以不知道如何做音乐&#xff0c;但是…

Normalizing Kalman Filters for Multivariate Time Series Analysis

l l l means latent state&#xff0c;LGM means ‘linear Gaussian state space models’ 辅助信息 作者未提供代码