应用程序的资源文件是指在应用程序中使用的非代码文件,它们可以包含图像、声音、文本和其他数据。这些资源文件可以帮助开发人员创建出丰富多彩的应用程序,而不必花费大量时间去编写代码。
资源文件通常存储在特定的目录中,并且可以使用特定的格式来存储。例如,图像可能会存储为JPEG或PNG格式,而声音可能会存储为WAV或MP3格式。此外,这些资源文件还可能会使用特定的API来加载和使用,例如OpenGL或DirectX API。
// 加载图片 Image image = new Image("image.png"); // 加载声音 Sound sound = new Sound("sound.wav"); // 加载文本 String text = File.readAllText("text.txt"); // 加载3D模型 Model model = Model.load("model.obj");
在系列教程中的最新一篇里,我们将研究大家最可能在第一个开发项目中涉及到的资源类型。项目资源当中包含布局、图片以及数据值,这些都是应用需要使用的元素。当我们创建一个新项目时,项目目录下会自动生成多个用于容纳通用资源类型的文件夹。如果需要,大家还可以添加更多文件夹以扩展资源类型数量。
大家可以通过Package Explorer浏览“res”文件夹当中的内容,这些就是我们之前在创建项目时所使用的资源。打开文件夹、看看里面都藏着哪些宝贝。大家还可以在资源目录下添加更多新文件夹,也可以在各文件夹中添加新文件,或者是直接使用现有文件(例如我们在前几篇系列文章中所使用的布局与字符值文件)。
在我们正式开始之前,首先指出一点注意事项——大家可以将自己的Android资源划分为两大类:一种是能够被跨设备使用的资源,另一种则是针对设备特定子集的资源。大家可以在现有项目结构中发现二者的实例。在Eclipse Package Explorer当中,查看“res”目录。请记住,不同的可绘制文件夹对应着特定设备屏幕像素密度。在今天的文章中,我们打算使用非特定可绘制文件(即能够跨设备使用的资源)。
大家可以通过类别限定的方式为每种资源类型添加备用目录。在Eclipse当中,这代表着“drawable-hdpi”、“drawable-xhdpi”等不同类型。Android平台支持多种用户设备分类方式,其中包括屏幕尺寸、像素密度、API级别、语言以及区域等等。任何在名称中不包含类型限定的资源类型文件夹都能够实现跨设备使用。大家并不一定需要为所有资源类型都设置类别限定文件夹,但当我们针对不同设备进行应用测试时,可能需要在不同配置之间做出一些细微调整。
第一步
我们都知道,Eclipse会创建多个可绘制文件夹,每一个都针对一种特定的密度桶。可绘制文件夹当中包含我们在应用程序中所使用的任何图片。大家可以在Eclipse之外准备一些数字格式的图片,例如JPEG、PNG以及GIF。大家还可以利用XML代码定义可绘制资源。下面我们就着手尝试,并将其添加到主布局当中。
尽管大家应该尝试针对各种特定像素密度创建可绘制资源,但由于本教程的篇幅所限,今天我们姑且使用适应所有设备的单一可绘制方案。在Eclipse Package Explorer当中选择“res”文件夹,选择“File”或者右键点击该文件夹->选择“New”->“Folder”来创建一个新文件夹。将该文件夹命名为“drawable”然后点击“Finish”完成创建。
无论何时,只要我们需要在项目当中创建新文件夹,都可以遵循以上流程。
第二步
现在我们新建的可绘制文件夹应该已经与其它原有可绘制文件夹一道,显示在Package Explorer当中了。正如我们之前所提到,如果某个文件夹并不针对特定设备子集(即由像素密度分类或者API级别加以定义),那么大家完全可以随意置换其中的资源并将其用于任何用户设备。因此,无论我们向新的可绘制文件夹当中添加什么内容,其都会显示在所有用户设备之上。对于大部分可绘制资源来说,我们最需要注意的就是其不同像素密度版本;不过为了简单起见,我们将在今天的文章中使用这个新文件夹。
在Package Explorer当中选中我们的新建可绘制文件夹、右键点击或者选择“File”、而后选择“New”以及“Android XML File”,从而在文件夹中创建一个新文件。这时Eclipse会弹出新文件的创建导航。Android支持多种不同的可绘制文件类型。今天我们要创建的是一个图形可绘制文件,并利用其中所包含的不同图形及外观实现标记的目的。大家可以点击此处,通过开发者指南了解其它可绘制类型。
Spark SQL其它接口Spark SQL也支持直接运行SQL查询的接口,不用写任何代码。运行Thrift JDBC/ODBC服务器这里实现的Thrift JDBC/O...
Bolts正如你已经看到的,bolts 是一个 Storm 集群中的关键组件。你将在这一章学到 bolt 生命周期,一些 bolt 设计策略,以及几个...
和SQL一样,Neo4j CQL提供了一些在RETURN子句中使用的聚合函数。 它类似于SQL中的GROUP BY子句。我们可以使用MATCH命令中的RETUR...
Neo4j CQL创建节点标签Label是Neo4j数据库中的节点或关系的名称或标识符。 我们可以将此标签名称称为关系为“关系类型”。 我们...
有时,根据我们的客户端要求,我们需要向现有节点或关系添加新属性。 要做到这一点,Neo4j CQL 提供了一个SET子句。Neo4j CQL 已...