Android SDK上手指南:应用程序结构

简介: 版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996848 介绍本教程将主要以探索与了解为主要目的,但后续的系列文章则将进一步带大家深入学习如何创建用户界面、响应用户交互操作以及利用Java编排应用逻辑。
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/52996848

介绍

本教程将主要以探索与了解为主要目的,但后续的系列文章则将进一步带大家深入学习如何创建用户界面、响应用户交互操作以及利用Java编排应用逻辑。我们将专注于大家刚刚开始接触Android开发时最常遇到的项目内容,但也会同时涉及一部分已经存在于应用结构当中的其它一些元素。在今天的文章中,我们不会对这些额外元素进行深入探讨。总而言之,了解关于Android应用的基础创建知识,这就是我们今天要完成的教学任务。

1. 源

第一步

打开Eclipse并在Package Explorer当中查找我们已经创建完成的项目。在“src”文件夹里,大家应该会看到设置项目所命名的项目包。包中应该包含我们的Activity类文件,这也是要在编辑器中打开的内容。源文件夹保存着我们在开发Android应用程序时所要用到的全部Java文件。

每当我们创建一个项目时,都会创建一个用于容纳各Java类文件的包。一款应用程序可能拥有不止一个包,而且每个包当中也可能容纳着多个类文件。这些类文件中的处理代码能够将我们的应用呈现给用户、响应用户的交互操作并执行任何的必要处理。从实质上看,类文件是在根据面向对象概念模型划分与应用程序相关的代码。

我们将在后续文章中进一步讨论关于Java的概念以及对应实践。在今天的教程内,大家只需理解一个Java应用会将各类处理任务拆分成一定数量的对象。每个对象都由一个类声明来定义,这在应用程序中通常是一个独立的文件,不过也可以被嵌套在其它类文件当中。一个对象基本上就是一大段代码,其中承载着与应用程序相关的某项功能的一部分。类文件中的代码能够引用应用程序中的其它类或者应用程序中的其它包。

在大家着手进行应用程序开发时,首先需要向源文件夹中的包中添加Java类。一个向用户提供用户界面的典型Android应用将拥有至少一个Activity文件,应用中的不同屏幕显示内容还要用到更多Activity类。其它一些类型的应用,例如工具程序或者服务,则采用不同的结构。大家最好首先关注Activity UI这种类型的应用程序,并在熟练掌握之后再接触其它应用类型。

第二步

现在查看新应用中的Activity类文件。我们会在本系列教程的后续文章中进一步探讨Activity代码,因此目前大家不用太过关注细节。今天我们主要面向应用中的主Activity,它会在应用启动后同时开始生效。大家的应用也可能会启动其它一些用于用户交互的Activity。在我们创建自己的项目时,Eclipse会对应用进行设置并将主Activity作为主类——它在项目清单当中也将被作为主Activity进行显示,我们稍后会看到。

在主Activity类当中,大家会看到onCreate方法,其中包含的代码将在Activity被创建——也就是应用程序启动时开始执行。在该方法中,大家会看到以下代码行:

setContentView(R.layout.activity_main);

在我们启动项目之后,这一行的内容用于指定我们所创建的布局文件,告诉Android将其作为内容视图。这意味着无论布局文件中包含什么样的内容,都将在该Activity显示在屏幕上时呈现给用户。

我们将在稍后进一步探讨相关话题,目前暂时需要将注意力集中在“R.layout.activity_main”语法上。这就是我们的Java代码引用应用程序资源的方式。我们将利用类似的语法通过资源的ID值对其进行引用,例如图片及数据值等资源也可以通过这种方式实现引用。其中的“R”代表应用资源,后面的部分则用于指定保存在“res/layout”目录下的条目类型——在这里就是布局。这些资源最终要根据其名称进行识别——对于示例中的布局,使用的就是文件名。由此推断,我们要使用的语法就成了“R.type.name”。在我们开始编程之后,各位就会开始使用该语法。

在本系列的后续文章中,我们将向Activity类文件中添加代码以实现用户交互。现在打开应用中的“res”文件夹,大家会在其中找到多个子文件夹。这些文件夹是由Eclipse与ADT在我们启用新Android项目后默认创建而成的,不过我们可能还需要为不同类型的资源添加其它一些目录。

2. 布局资源

正如我们已经看到,项目创建后所生成的布局文件会保存在“res/layout”文件夹中。如果某款应用拥有多个Activity屏幕,那么一般会为每个屏幕保留一个独立的布局文件。大家可能还会将布局文件用于个别UI条目。当大家为Activity创建类文件时,需要如上所述利用setContentView进行布局设置。除此之外,大家也可以通过Java代码进行布局设置——这算是种备选方案。在我们的示例中,布局设置是在应用执行时动态生成的。不过利用XML的优势在于,我们可以在界面设计工作中直观感受布局方案的视觉效果。

在应用程序的主布局文件当中(现在应该已经用编辑器打开了),大家会看到XML结构。如果各位之前没有接触过XML也不必担心,我们会在后续文章中进一步讨论这些基础知识。就目前来说,大家只需了解:XML是一种标记语言,类似于HTML——如果之前接触过Web开发的话。XML文件利用树状结构作为数据模型。通常来说,一个布局文件拥有一个根布局元素,并将其作为特定布局类型模型——其中所包含的用于UI条目的子元素则包括按钮、图片及文本等。

3. 可绘制资源

大家在资源目录下应该会看到多个在名称中包含“drawable”字样的文件夹,这些文件夹用于保存应用程序所使用的图片文件。这些图片文件可以是我们在Eclipse之外所准备的数字图片文件,格式包括PNG或者JPEG等。或者,大家也可以通过XML代码来描述形状、颜色以及外观,从而定义特定可绘制资源。一旦我们在drawable文件夹中创建了文件,就可以在应用布局文件或者Java代码中进行引用。这样一来,之前准备好的视觉元素就能用于应用UI了。

资源目录中会保留针对每一种密度桶的drawable文件夹。这些密度桶是各类运行Android系统的设备在像素密度方面的通用型分类依据。具体类别分为低、中、高、超高与超超高密度四种。只需从对应类型中作出选择,我们就可以在密度桶的帮助下轻松简化多屏幕密度的支持过程。这意味着当我们在项目中包含图片文件时,可以将其放置在不同密度的文件夹当中,并通过裁剪提供满足各种密度方案的版本。

4. 数据资源

在“res”目录中,我们会看到一些标题中带有“values”字样的文件夹。这些文件夹用于容纳大家希望在应用程序中所使用的数据值。这些值可以包含文本字符串以及数字。包含XML文件的值文件夹会列出其中的一项或者多项值。每份列表都包含一个名称以及内容中的值。应用中的其它文件,例如Java类或者布局文件,能够通过这些名称为引用这些值。在典型用例中,我们能够需要通过这些保存在文本字符串的值在UI元素当中显示内容——例如按钮。

应用程序中的不同值文件允许大家针对特定屏幕尺寸及API级别对值进行修改。如果同样的值足以应对多川设备,则可以被直接保存在“Values”文件夹内。

5. 清单

在查看应用程序中的主文件夹时,大家一定会发现项目的清单文件。通过双击即可利用编辑器将其打开。接下来,我们会看到一个显示其内容的图形界面。点击编辑器窗口底部的“AndroidManifest.xml”标签来查看其XML代码。这个文件将应用程序的各个方面定义成统一整体。Eclipse与ADT会在我们创建应用的同时,在清单中创建特定元素,具体创建方式取决于大家在项目创建过程中的设置。大家可以手动向清单中添加其它元素,例如添加其它Activity。

我们将运行其中的一部分主元素,旨在理解清单的作用,不过还有其它多种元素可以被包含其中。在清单中所列举的新应用项目元素当中,我们将看到uses-sdk元素,我们利用它表示最小及目标API级别。Application元素中包含指向启动机制与应用程序名称的属性。在application元素中还存在着一个activity元素,会在应用程序开始运行时通过intent-filter元素作为主Activity启动。当我们向应用中添加新的Activity时,则会为每个相关元素添加新的activity元素。

大家可能还需要向清单中添加其它元素,其中包括uses-permission元素,用于罗列应用所要求的权限——用户会在安装应用之前观看到该列表。权限中包含多种操作条目,例如通过互联网获取数据、写入存储或者访问设备上的其它功能——如相机。清单还会列举应用程序所能支持的设备类型以及其它一些应用程序组件(例如后台服务)。

6. 其它文件

讲到这里,我们已经谈到了大家需要了解的Android应用程序项目结构中的各大主要方面。随着对Android开发的学习,大家将在今后经常与这些内容打交道。通过Eclipse,我们还会看到项目中包含的其它一些文件及目录,不过就目前来说基本都可以直接忽略。

正如在前面看到的,大家可以利用“R.”语法实现资源引用。Eclipse以及管理系统的ADT都会引用应用中来自Java的资源。当大家在项目中对这些资源进行添加或者编辑时,Eclipse会将对应内容写入“R.java”文件,从而帮助我们利用“R.”进行资源引用。当大家开始处理自己的Java文件,会在引用时看到Eclipse弹出的提示信息——这种机制能简化对应用资源的管理工作。“R.java”文件被保存在“gen”文件夹中。请注意:千万不要尝试直接编辑这个文件,它会在我们编辑项目资源时自动生成。系统会通过为应用中的每项资源分配惟一整数ID的形式管理这一过程。

提示:当大家开始尝试Android应用程序开发时,可能会在使用R时遇到问题。如果Eclipse显示任何与R相关的错误信息,特别是“R无法被解析为一个变量”,则需要检查类文件的起始内容,看看其中是否存在“R”的导入语句,例如“import android.R;”。如果找到了对应内容,特别是在已经将代码复制并粘贴到文件中后,请删除这一导入语句。如果遇到其它与R相关的提示,请确保资源文件当中不存在错误。如果问题仍然存在,尝试利用“Project”,“Clean”清理项目。当一切努力皆告失败时,试着重新启动Eclipse。

总结

在今天的文章中,我们了解了关于Android项目结构的基础知识。大家可以再花点时间随意查看项目中的其它文件及文件夹,借此了解项目的整体结构。在接下来的后续教程中,我们将在应用中创建用户界面元素并处理用户交互操作。我们还会探讨关于Java编程的基本特性,借此进一步提升自己对Android开发项目的理解。

目录
相关文章
|
22天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
22天前
|
Java Linux API
Android SDK
【10月更文挑战第21天】
57 1
|
23天前
|
存储 搜索推荐 Java
打造个性化安卓应用:从设计到实现
【10月更文挑战第30天】在数字化时代,拥有一个个性化的安卓应用不仅能够提升用户体验,还能加强品牌识别度。本文将引导您了解如何从零开始设计和实现一个安卓应用,涵盖用户界面设计、功能开发和性能优化等关键环节。我们将以一个简单的记事本应用为例,展示如何通过Android Studio工具和Java语言实现基本功能,同时确保应用流畅运行。无论您是初学者还是希望提升现有技能的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧。
|
26天前
|
搜索推荐 开发工具 Android开发
打造个性化Android应用:从设计到实现的旅程
【10月更文挑战第26天】在这个数字时代,拥有一个能够脱颖而出的移动应用是成功的关键。本文将引导您了解如何从概念化阶段出发,通过设计、开发直至发布,一步步构建一个既美观又实用的Android应用。我们将探讨用户体验(UX)设计的重要性,介绍Android开发的核心组件,并通过实际案例展示如何克服开发中的挑战。无论您是初学者还是有经验的开发者,这篇文章都将为您提供宝贵的见解和实用的技巧,帮助您在竞争激烈的应用市场中脱颖而出。
|
2月前
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
57 7
|
28天前
|
算法 Java 数据库
Android 应用的主线程在什么情况下会被阻塞?
【10月更文挑战第20天】为了避免主线程阻塞,我们需要合理地设计和优化应用的代码。将耗时操作移到后台线程执行,使用异步任务、线程池等技术来提高应用的并发处理能力。同时,要注意避免出现死循环、不合理的锁使用等问题。通过这些措施,可以确保主线程能够高效地运行,提供流畅的用户体验。
39 2
|
2月前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
52 5
|
2月前
|
移动开发 Dart 搜索推荐
打造个性化安卓应用:从零开始的Flutter之旅
【10月更文挑战第20天】本文将引导你开启Flutter开发之旅,通过简单易懂的语言和步骤,让你了解如何从零开始构建一个安卓应用。我们将一起探索Flutter的魅力,实现快速开发,并见证代码示例如何生动地转化为用户界面。无论你是编程新手还是希望扩展技能的开发者,这篇文章都将为你提供价值。
|
2月前
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin多线程优化策略
【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
51 4
|
2月前
|
编解码 Android开发 UED
构建高效Android应用:从内存优化到用户体验
【10月更文挑战第11天】本文探讨了如何通过内存优化和用户体验改进来构建高效的Android应用。介绍了使用弱引用来减少内存占用、懒加载资源以降低启动时内存消耗、利用Kotlin协程进行异步处理以保持UI流畅,以及采用响应式设计适配不同屏幕尺寸等具体技术手段。
51 2