Android SDK上手指南:应用程序资源

简介: 版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996942 介绍在系列教程中的最新一篇里,我们将研究大家最可能在第一个开发项目中涉及到的资源类型。
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996942

介绍

在系列教程中的最新一篇里,我们将研究大家最可能在第一个开发项目中涉及到的资源类型。项目资源当中包含布局、图片以及数据值,这些都是应用需要使用的元素。当我们创建一个新项目时,项目目录下会自动生成多个用于容纳通用资源类型的文件夹。如果需要,大家还可以添加更多文件夹以扩展资源类型数量。

大家可以通过Package Explorer浏览“res”文件夹当中的内容,这些就是我们之前在创建项目时所使用的资源。打开文件夹、看看里面都藏着哪些宝贝。大家还可以在资源目录下添加更多新文件夹,也可以在各文件夹中添加新文件,或者是直接使用现有文件(例如我们在前几篇系列文章中所使用的布局与字符值文件)。

1. 备用资源

在我们正式开始之前,首先指出一点注意事项——大家可以将自己的Android资源划分为两大类:一种是能够被跨设备使用的资源,另一种则是针对设备特定子集的资源。大家可以在现有项目结构中发现二者的实例。在Eclipse Package Explorer当中,查看“res”目录。请记住,不同的可绘制文件夹对应着特定设备屏幕像素密度。在今天的文章中,我们打算使用非特定可绘制文件(即能够跨设备使用的资源)。

大家可以通过类别限定的方式为每种资源类型添加备用目录。在Eclipse当中,这代表着“drawable-hdpi”、“drawable-xhdpi”等不同类型。Android平台支持多种用户设备分类方式,其中包括屏幕尺寸、像素密度、API级别、语言以及区域等等。任何在名称中不包含类型限定的资源类型文件夹都能够实现跨设备使用。大家并不一定需要为所有资源类型都设置类别限定文件夹,但当我们针对不同设备进行应用测试时,可能需要在不同配置之间做出一些细微调整。

2. 可绘制资源

第一步

我们都知道,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支持多种不同的可绘制文件类型。今天我们要创建的是一个图形可绘制文件,并利用其中所包含的不同图形及外观实现标记的目的。大家可以点击此处,通过开发者指南了解其它可绘制类型。

在顶部的下拉列表中,我们可以选择资源的具体类型——由于我们是在可绘制文件夹中创建新文件的,所以Eclipse会自动选中“drawable”。接下来是项目下拉列表,同时应该自动填入我们所选择的项目。然后是在文本输入框内为文件命名——输入“nice_shape.xml”。输入框下方是我们可以选择的根元素列表。下滚并选择“shape”,因为我们打算定义的是图形可绘制资源。最后点击“Finish”,Eclipse会创建新文件并在编辑器中打开。

第三步

在图形可绘制对象中,大家可以选择一系列通用图形类别,其中包括矩形、椭圆、线条和圆环。选择了图形类别之后,我们就可以对其具体属性加以定义,例如实心或者渐变颜色、边角、填充、尺寸以及笔触等。我们通过以下代码编辑根shape元素,从而获得一个矩形:

 
 
  1.  <shape xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:shape="rectangle" > 
  3. </shape> 

大家接下来可以通过在根shape元素中添加其它元素来定义图形属性。首先定义一个梯度:

 
 
  1. <shape xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     android:shape="rectangle" > 
  3.     <gradient 
  4.         android:angle="270" 
  5.         android:centerColor="#FFFFFF00" 
  6.         android:endColor="#FF0000FF" 
  7.         android:startColor="#FFFF0000" 
  8.         android:type="linear" /> 
  9. </shape> 

我们需要定义梯度的类型、角度外加起点、终点以及中央的颜色。在gradient元素完成后,我们再添加一些圆角:

 
 
  1. <corners android:radius="10dp" /> 

下面添加笔触:

 
 
  1. <stroke 
  2.    android:width="2dp" 
  3.    android:color="#FF339966" /> 

当我们在编辑器中输入内容时,会看到Eclipse提示的可用元素与属性类型。在完成本教程之后,大家可以用一段时间来尝试它们对效果的影响。我们将在下一步骤中将创建好的图形用在UI当中。现在保存可绘制文件。

提示:要在应用程序内使用Eclipse之外所准备的数字图片文件,大家只需直接将其复制到工作区目录下对应的可绘制文件夹当中即可。在文件向资源文件夹的复制过程结束后,大家可能需要刷新Eclipse视图——即在Package Explorer中选择对应项目,右皱起击或者选择“File”,然后选择“Refresh”。这样我们就能在应用程序代码中引用这些图片文件了。

3. 布局资源

第一步

我们先回顾一下之前文章在设计应用程序用户界面时,其中所涉及的布局知识。先来看布局文件与可绘制交互。我们可以在布局当中将可绘制资源作为View或者特定View的背景加以显示。首先列出我们已经创建完成的图形可绘制资源,并将其作为现有View的背景。打开应用程序的主布局文件,将图形可绘制资源作为我们之前添加的按钮的背景图案。为Button元素添加以下属性:

 
 
  1. android:background="@drawable/nice_shape" 

我们利用资源类型与名称(即我们为可绘制资源设定的文件名)将其引用到布局当中。请注意,这与我们之前用于引用字符串值的语法形式是一样的。保存并切换到Graphical Layout标签,查看图形是否已经成为按钮背景。大家可能会注意到,按钮还需要一点填充调整。现在切换回XML编辑模式并为Button元素添加填充属性:

 
 
  1. android:padding="5dp" 

重新切换回Graphical Layout标签并查看实际效果。

第二步

现在让我们在专用View中使用图形可绘制资源。将以下代码添加到布局中的Button元素内:

 
 
  1. <ImageView 
  2.   android:layout_width="fill_parent" 
  3.   android:layout_height="fill_parent" 
  4.   android:layout_margin="10dp" 
  5.   android:src="@drawable/nice_shape" /> 

我们设置ImageView来填满除了边界之外的空间。大家也可以选择为其设置固定长度与宽度来达到同样的效果。请注意,Eclipse会显示警告,因为我们还没有为其添加内容描述属性。现在开始着手进行,打开我们的“res/values”字符串XML文件并添加以下内容:

 
 
  1. <string name="pic">Picture</string> 

现在大家可以将该字符串添加到布局文件下的ImageView当中:

 
 
  1. android:contentDescription="@string/pic" 

如大家所见,资源的使用需要在项目中的不同文件之间来回切换,同时使用标准语法模式实现对不同资源条目的引用。现在再次切换以查看图形预览效果。

大家可以使用图中所示的控件进行放大与缩小。

4. 其它资源类型

到目前为止,我们已经在应用程序当中使用了三种资源类型:布局、可绘制与值。其实可以在应用中使用的资源类型还有很多,只需通过前面介绍的方法加以引用即可。正如我们在本系列之前的文章中所提到,大家还可以利用以下语法引用Java文件中的资源:

 
 
  1. //R.type.name 
  2. .string.pic//example 

让我们简要总结一下将来可能会用在应用程序当中的其它资源类型。在之前的文章和本文的前面几个章节,我们已经使用了可绘制与布局资源。字符串值也出现在布局文件当中。现在在Package Explorer当中打开“values”文件夹,除了字符串文件之外,Eclipse通常还会添加一个尺寸文件和一个样式文件。在样式文件内,大家可以定义外观属性从而与应用程序的UI风格保持一致。而在“dimens”文件中,大家可以定义应用程序所使用的尺寸值。

如我们之前所提到,大家可以通过限定机制为特定设备属性创建备用资源类型文件夹。如大家所见,Eclipse会针对特定API级别创建值文件夹,但我们也可以利用其它一些限定手段实现对特定设备的支持。举例来说,大家可能希望在我们所添加的ImageView当中使用固定宽高尺寸,从而使显示大小与设备屏幕尺寸完美契合。为了实现这一点,大家可以添加值文件夹及其中的尺寸文件来匹配各种尺寸或者像素密度桶(例如‘-small’、‘-large’、‘-hdpi’、‘-mdpi’等等)。通过在每个文件当中包含尺寸值,并在相同的值名称之下使用不同数字,Android系统将自动选择最适合用户设备的方案。

大家可能需要用到的其它资源类型还包括数字、菜单、动画以及颜色值。Eclipse通常会在我们创建一个应用程序之后为其创建一个菜单文件夹,现在请大家打开该文件夹看看其中的内容。要定义XML动画,大家可以向“res”目录中添加一个“anim”或者“animator”文件夹,也可以直接将动画文件添加到可绘制文件夹当中——具体方式取决于我们所使用的实际动画类型。

如果大家希望在应用程序UI中使用一组颜色,则可以在保存于值目录下的文件中对color元素进行定义。每个color元素都可以包含一个HEX值与一个名称属性,这样我们就可以在其它文件当中引用这些颜色了。至于那些无法被归于任何一种Android定义类别的XML资源,大家可以将其保存在“res”目录下的“xml”文件夹当中。

要对Android当中的全部资源类型拥有透彻了解,大家可以查看开发者指南当中的“资源类型”与“更多资源类型”两个章节。虽然在学习的起步阶段最好只接触比较浅显的内容,但这些资料仍然值得大家认真阅读,从而为今后的开发工作奠定良好的知识基础。

提示:当大家参阅Android项目实例或者开发者指南时,经常会在其中发现一些经常被资源使用的标准文件名。不过文件名本身其实可以随意选择——只要大家使用正确的文件夹名称与元素,这样应用程序代码就可以通过识别系统访问所有资源。除此之外,坚持使用传统文件名可以让我们的应用程序更加清晰且便于理解,特别是对于值文件夹来说。

总结

在今天的文章中,我们了解了Android系统当中关于应用程序资源的基础知识。不过正如之前所提到,还有很多未知领域等等着我们去探索。对于大家的第一款应用,各位只需要使用相对简单的方案帮助自己习惯资源的使用方法即可。但随着我们在应用开发方面的不断成长,大家应该尝试思考各类用户设备在运行我们应用时可能面临的情况,并为其提供必要的额外资源。在本系列教程的下一部分中,我们将一同了解项目的Manifest(清单)文件。

目录
相关文章
|
13天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
14天前
|
数据库 Android开发 开发者
构建高效Android应用:Kotlin协程的实践指南
【4月更文挑战第2天】随着移动应用开发的不断进步,开发者们寻求更流畅、高效的用户体验。在Android平台上,Kotlin语言凭借其简洁性和功能性赢得了开发社区的广泛支持。特别是Kotlin协程,作为一种轻量级的并发处理方案,使得异步编程变得更加简单和直观。本文将深入探讨Kotlin协程的核心概念、使用场景以及如何将其应用于Android开发中,以提高应用性能和响应能力。通过实际案例分析,我们将展示协程如何简化复杂任务,优化资源管理,并为最终用户提供更加流畅的体验。
|
14天前
|
开发框架 安全 Android开发
探索安卓系统的新趋势:智能家居应用的蓬勃发展
随着智能家居概念的兴起,安卓系统在智能家居应用领域的应用日益广泛。本文将探讨安卓系统在智能家居应用开发方面的最新趋势和创新,以及其对用户生活的影响。
12 2
|
17天前
|
缓存 监控 Java
构建高效Android应用:从优化用户体验到提升性能
在竞争激烈的移动应用市场中,为用户提供流畅和高效的体验是至关重要的。本文深入探讨了如何通过多种技术手段来优化Android应用的性能,包括UI响应性、内存管理和多线程处理。同时,我们还将讨论如何利用最新的Android框架和工具来诊断和解决性能瓶颈。通过实例分析和最佳实践,读者将能够理解并实施必要的优化策略,以确保他们的应用在保持响应迅速的同时,还能够有效地利用系统资源。
|
17天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
12 0
|
22天前
|
编解码 算法 Java
构建高效的Android应用:内存优化策略详解
随着智能手机在日常生活和工作中的普及,用户对移动应用的性能要求越来越高。特别是对于Android开发者来说,理解并实践内存优化是提升应用程序性能的关键步骤。本文将深入探讨针对Android平台的内存管理机制,并提供一系列实用的内存优化技巧,以帮助开发者减少内存消耗,避免常见的内存泄漏问题,并确保应用的流畅运行。
|
23天前
|
调度 数据库 Android开发
构建高效Android应用:Kotlin协程的实践与优化
在Android开发领域,Kotlin以其简洁的语法和平台友好性成为了开发的首选语言。其中,Kotlin协程作为处理异步任务的强大工具,它通过提供轻量级的线程管理机制,使得开发者能够在不阻塞主线程的情况下执行后台任务,从而提升应用性能和用户体验。本文将深入探讨Kotlin协程的核心概念,并通过实例演示如何在实际的Android应用中有效地使用协程进行网络请求、数据库操作以及UI的流畅更新。同时,我们还将讨论协程的调试技巧和常见问题的解决方法,以帮助开发者避免常见的陷阱,构建更加健壮和高效的Android应用。
31 4
|
25天前
|
移动开发 Java Android开发
构建高效Android应用:Kotlin协程的实践之路
【2月更文挑战第31天】 在移动开发领域,性能优化和流畅的用户体验一直是开发者追求的目标。随着Kotlin语言的流行,其异步编程解决方案——协程(Coroutines),为Android应用带来了革命性的并发处理能力。本文将深入探讨Kotlin协程的核心概念、设计原理以及在Android应用中的实际应用案例,旨在帮助开发者掌握这一强大的工具,从而提升应用的性能和响应能力。
|
26天前
|
安全 Android开发 开发者
构建高效Android应用:Kotlin与协程的完美结合
【2月更文挑战第30天】在移动开发领域,性能优化和流畅的用户体验是关键。本文深入探讨了如何通过结合Kotlin语言和协程技术来提升Android应用的性能和响应能力。我们将分析Kotlin的优势,介绍协程的基本概念,并通过实际案例展示如何在应用中实现协程以简化异步编程,从而提供更加高效的解决方案。
|
15天前
|
Java Android开发 开发者
构建高效Android应用:Kotlin协程的实践与优化
在响应式编程范式日益盛行的今天,Kotlin协程作为一种轻量级的线程管理解决方案,为Android开发带来了性能和效率的双重提升。本文旨在探讨Kotlin协程的核心概念、实践方法及其在Android应用中的优化策略,帮助开发者构建更加流畅和高效的应用程序。通过深入分析协程的原理与应用场景,结合实际案例,本文将指导读者如何优雅地解决异步任务处理,避免阻塞UI线程,从而优化用户体验。