Android developer 阅读笔记--应用资源概览

编辑文章中的疑问
1 R类的原理

在android开发的过程中,应当保持良好的习惯,最好就是把与资源文件相关的东西外部化。例如,给TextView设置一个字符串的时候,不是采用直接把指定字符串传入setText()方法的参数中。而是引用String资源文件中的标签。这样假设用户切换了国家语言,这个标签也会根据规则自动的引用相应国家的string 文件,从而完成显示方面的语言切换。这样就可以很好的国际化。下面我们将一一讲解,资源文件相关东西。 是用来做什么的,下面有什么分类,系统是按照何种规则来选择相应的资源文件的。

用来做什么的

资源文件的主要作用就是解决多环境下的显示适配问题。在运行时,Android 会根据当前配置使用适当的资源。例如平板与手机屏幕不同,显示的界面可能也会不同,这时候我们需要写出分别适应平板和手机的界面,放入指定的文件夹下面。运行时,平板就会出平板的界面,手机就会出手机的界面。当然,运行时怎么选择相应文件是有一定规则的。这个稍后讨论。

代码上是怎么使用的

这个很简单,想必大家应该都用过。就是通过R类中生成的资源id来访问相应的资源, 例如TextView 中 setText(int id) 我们通常是这样使用的: setText(R.string.xxxxxxx);

文件结构

在这里插入图片描述

上面这张图片应该都很熟悉吧。我们的资源文件,就是被存储在res文件夹下面的。下面首先有四个子文件夹,并且这四个文件夹的名字 一定不要更改! 下面是这几个文件夹的用途:
drawable:存放图像资源文件
layout:用来存放布局资源
mipmap:用来存放启动图标
values:用来存放字符串资源
以上四个文件夹的名字不能更改,并且这四个文件夹只是andriod studio 默认帮我们建立好的。事实上,res 文件夹,可支持的子文件夹名称可不止是这些!也就是res可支持的资源类型其实有很多,下面看看它还可以支持啥子文件夹,以及各个名称的子文件夹的作用。每个文件夹所涉及的相关知识将在后期专门写文章,并给出相应链接。
animator/:用来定义属性动画的XML文件。
anim/:用来定义渐变动画的XML文件。(属性动画也可以保存在此目录中,但是为了区分这两种类型,属性动画首选 animator/ 目录。)
color/:用来定义颜色状态列表的XML文件
drawable/:位图文件(.png、.9.png、.jpg、.gif)或编译为以下可绘制对象资源子类型的 XML 文件:
位图文件
九宫格(可调整大小的位图)
状态列表
形状
动画可绘制对象
其他可绘制对象
**mipmap/**适用于不同启动器图标密度的可绘制对象文件。如需了解有关使用 mipmap/ 文件夹管理启动器图标的详细信息
**layout/**用于定义用户界面布局的XML文件。最常用!
**menu/**用于定义应用菜单(如选项菜单,上下文菜单或子菜单的XML文件)这个的用法不是很了解。
**raw/**以原始的形式保存文件。同时如果打开文件需要使用资源 ID(即 R.raw.filename)调用 Resources.openRawResource()。但是,如需访问原始文件名和文件层次结构,则可以考虑将某些资源保存在 assets/ 目录下(而不是 res/raw/)。assets/ 中的文件没有资源 ID,因此只能使用 AssetManager 读取这些文件。
**values/**这个文件夹的应用是非常普遍的!通常用于对语言字符串,颜色,建立新的属性等。
主要的有:
arrays.xml,用于资源数组(类型化数组)。
colors.xml:颜色值。
dimens.xml:尺寸值。
strings.xml:字符串值。
styles.xml:样式。
**xml/**这个文件夹说实话我根本没有用过。可在运行时调用 Resources.getXML() 读取任意的xml文件。各种xml配置文件如可搜索配置)都必须保存在此处。

以上的文件夹里存储的都是默认资源。也就是其他类型资源没有的情况下,就用它。但是其他情况是什么情况呢?
Android机型有千百种,有手机,平板,手表。难道走同样的代码,我展示的都要一模一样么?如果一模一样显然是不行的。让一个手表显示手机上的界面,那得丑到什么程度。。所以,采用Android系统的不同类型的设备设备之间,可能会需要符合自身特点的资源文件。比如屏幕尺寸大于标准尺寸的时候,可能加载的是另外一种样子的布局。
在这里插入图片描述

想要实现这样的效果,除了默认资源以外,我们还需要提供备用资源

提供备用资源

在开发应用中,每个应用都应当提供一些备用资源用于支持一些特殊的资源配置。比如针对不同屏幕密度的设备,和不同国家的文案语言。

如何指定备用资源?

1 在res/大文件夹下,创建一个以 <resorces_name>-<config_qualifier>[-<config_qualifier>] (资源名称-配置限定词后面可以跟随若干个配置限定词)
上一小节里面介绍的子文件夹,提到过名称不要更改,,此处的就是上面的文件夹名称。任意一个都可以。关键是你要做什么用,从而选择不同的名。
<config_qualifier> 是指定要使用这些资源的各个配置的名称,如图所示:
在这里插入图片描述
其中 drawable就是默认情况下的引用文件位置。drawable-xhdpi表示资源适用于屏幕密度较高的设备,当屏幕密度较高的时候,会自动引用drawable-xhdpi的文件。这样一来,用于引用 icon.png 或 background.png 图像的资源 ID 始终相同,但是 Android 会通过将设备配置信息与资源目录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值