admin管理员组

文章数量:1530842

2024年1月11日发(作者:)

Android Studio开发手册

第一章 Android Studio简介及其环境搭建

1.1 Android Studio简介

1.1.1 Android Studio能做什么

谷歌公司的 Android操作系统,作为智能手机等移动设备的平台。Android

Studio是谷歌公司研发的开发基于 Android系统的软件开发工具,也就是开发运行在 Android平台上的 APP,这些应用可以设计为工具、管理、互联网、游戏等等软件。Android Studio开发的产品不仅可以运行在智能手机上,还可以开发智能穿戴、电视、车载设备的应用。

1.1.2 为什么选择 Android Studio

从 Android 操作系统诞生的时候,开发基于 Android 系统的 APP 的平台是 Eclipse,关于Android Studio 相比 Eclipse 的优点网络上讨论很多。Android Studio作为谷歌在 2013 年为开发者提供的 IDE 环境工具,已经成为了非常强大的 IDE 开发环境。谷歌也宣布将在年底前中止对其他 IDE 开发环境的支持。安卓产品经理 Jamal Eason 在声明中写道“谷歌将会全力专注于

Android Studio 编译工具的开发和技术支持,中止为 Eclipse 提供官方支持。包括中止对 Eclipse ADT 插件以及Android Ant 编译系统的支持。”

1.2 Android 系统基本知识

用 Android Studio 开发出来的 APP 是运行在 Android 操作系统上的,所以这里概述安卓系统的基本知识是非常必要的。安卓系统是为移动设备准备的操作系统,已被各大移动设备制造商所采用。它含有一个 Linux 操作系统和一些中间件,通常,它还带有一系列关键应用,如联系人管理、地图应用、浏览器等等。安卓由谷歌开发和维护,它是一个开源项目,可以下载它的源代码。

图 1-1 Android系统

这里把安卓平台按照从下至上顺序分为四层,图中最上面为第四层是应用层,一般的安卓设备都会预装一些应用,所以你有联系人管理、打电话、网络浏览器等应用。安卓的奇妙之处是一个开放式平台,像我们这样的第三方开发者,可以定制自己的应用,并提供给使用安卓设备的用户,这就是在安卓应用框架上建立应用,这就是第三层。注意第三、四两层都是蓝色的,都是用 Java 编写的。因此,移动设备上自带的所有应用,以及第三方或者你自己开发的应用,都是用

Java 语言写的。应用框架是一系列相互紧密联系的应用框架,其中有一系列不同的子框架,有管理活动的框架。有窗口管理框架,有管理设备本地内容的框架,有处理电话事件的框架,有位置管理框架等等。

而框架本身,则是在一系列库之上写出来的,也就是绿色的第二层是安卓运行时。库都是用 C 和 C++写的,这些库是自带的,有一些是由谷歌实现的,其它是集成的开源库。比如SQLite 是一个轻量级数据库平台,它是安卓设备包含的开源项目,和 iPhone 使用的软件包是一样的都是 SQLite 数据库。还有浏览器的 WebKit 库等等。最后,所有这些都建于位于第一层的 Linux 内核之上,

这是硬件之上最直接的软件层,它管理最根本的所有资源,需要强调的是,自带应用程序和你作为开发者所开发的应用,都是基于相同的框架,管理联系人等和你的程序所使用的都是完全相同的框架,也就是说,安卓 API 没有特殊和秘密可言。自带程序和你作为开发者开发的程序没有本质差异,它是完全开放的。

1.3 搭建环境

1.3.1 系统安装条件

 Microsoft® Windows® 8/7/Vista/2003 (32 or 64-bit)

 内存至少 2 GB,推荐内存 4 GB

 安装完毕后硬盘至少有 400 MB 运行空间

 至少 1 GB 空间留给 Android SDK,模拟器系统映像,缓存

 至少 1280 x 800 屏幕分辨率

 Java Development Kit (JDK) 7

 可选加速模拟器: Intel® processor with support for Intel® VT-x,

Intel® EM64T (Intel®64), and Execute Disable (XD) Bit functionality

1.3.2 安装 JDK(Java Development Kit)

打开浏览器,输入网址:,在 ORACLE 网址首页上单击菜单

Downloads,然后在下载列表里选择 Java SE,在新出现的页面选择 Java SE

(includes JavaFX) | Early Access 。在新打开页面里单击 download,在下载页单击 Accept License Agreement ,然后根据自己操作系统是 32 位(选择

Windows x86),还是 64 位(选择 Windows x64),下载适合自己操作系统的JDK。

图 1-2

下载安装好 JDK 后,设置环境变量:打开控制面板>系统>高级系统设置>高级,单击按钮【环境变量】,在“系统变量”栏,单击【新建】,在弹出窗口设置变量名:JAVA_HOME,变量值:JDK 安装在你机器上的目录。例如,我的安装目录是 C:Program FilesJavajdk1.7.0_75,那么变量值应该是

C:Program FilesJavajdk1.7.0_75)

1.3.3 安装 Android Studio

图 1-3 是 AndroidStudio 的下载页面,由于谷歌网站被屏蔽,您需要设法和谷歌网站链接,解决办法网上有,这里就不介绍了,可以在网上搜索穿墙、hosts 之类关键字查找!

图 1-3 Android Studio下载页

下载android_studio_bundle_V1.2.0.0_文件,图

1-4 至图 1-16 是安装过程,注意如果不能和谷歌网站链接,到图 1-8 无法成功

图 1-4

图 1-5

图 1-6

图 1-7

图 1-8

图 1-9

注意:这一步能否成功的关键是否能和谷歌公司网站链接,不要尝试各种跳过这一步的方法

图 1-10

图 1-11

图 1-12

图 1-13

图 1-14

1.4 新建项目

安装完成后,快速创建一个项目检验一下,后面会详细说明创建项目的细节。打开Android Studio,如图 1-15 在欢迎界面单击 Start a new Android Studio

project。(注:如果你已经打开了项目,从 File 菜单,选择 New Project)

我们目前只需了解第一、二项:Start a new Android Studio project:开始新建 Android Studio 项目。现在我们是要新建一个项目,所以选择这一项。

Open an existing Android Studio project:打开已存在的 Android Studio 项目。

图 1-15 Android Studio开始界面

单击 Start a new Android Studio project,进入图 1-16 界面,

Application Name :HelloWorld;Company domain:。注意这里填写的内容与访问互联网没有任何关系,所以可以填写不存在的域名;Project location:保存项目文件的目录。学习 Android Studio 时候会创建许多应用程序,为集中管理。预先新建了文件夹 Androidproject,把本例放在这个文件夹里。填写 Application Name 字段,本例填写“My First App”,其它可保持默认,单击 Next。当然可以填写其它值,但这里希望你使用和我的例子一样值,学习后面内容会容易些。

图 1-16

进入图 1-17 界面 , 勾选 Phone and Tablet , Minimun SDK 选择 API

14:Android 4.0(IceCreamSandwich), Minimum SDK 选择 API 14: Android 4.0

(IceCreamSandwich). MinimumRequired SDK 是 app 所支持的最早 Android 版本。为了尽可能支持更多的设备,你应当把它设置为最低版本,这样 app 可为低版本提供核心可用功能。因为如果你的 app 所有功能仅能在最新版本的

Android 上运行的话会导致许多手机的版本不可用。我们目前只学习手机开发,不要勾选其它选项(TV, Wear, Glass),单击 Next。

图 1-17

选择界面布局。在图 1-18 选择 Blank Activity 单击 Next。选择一个与你开发 APP 相配的界面可以为你节省不少精力,但我们处于学习阶段选择“Blank Activity”,一个空白的布局。

图 1-18

在图 1-19 ,使用默认值,单击 Finish 按钮创建了项目。

图 1-19

稍等一会儿,Android项目现在有了基本的“Hello World” app,并且包括一些默认文件,如图 1-20。

图 1-20

1.5 运行 App

学习如何安装、运行 app 在一个实际设备上和一个 Android 模拟器上。实际设备包括智能手机、PDA 等等。下面我们就把实际设备认为一部安装 Android

系统的智能手机,简称手机。

1.5.1 运行在模拟器上

开发程序需要无数次的调试,如果每次都安装部署到实际手机上是现实的,只有开发的最后阶段才安装到手机上测试。所以需要运行在模拟手机上。

1.创建模拟器

单击模拟器,出现 3-1 界面,单击图中 Action,在弹出菜单中单击”Delete”,删除当前模拟器。

图 3-1

2.创建模拟器

3.选择模板

图 3-3

4.选择 Android4.0 的模拟器, 如果没安装,单击所在行的 download 下载。需要你的计算机能够和谷歌公司链接

图 3-4

图 3-5

图 3-6

设置好模拟器后,单击“运行”,便启动模拟器

图 3-7

1.5.2 运行在手机上

建议初学者仅做了解,跳过这一步,使用后面介绍的模拟器运行。

1.设置手机

1.1 使用 USB 线连接手机和你开发项目的计算机上。

1.2 打开设备的 USB debugging 功能

(1)在 Android3.2 或更老版本的手机上,设置->应用程序->开发

(2)在 Android4.0 或更新版本的手机上,开发者选项默认是隐藏的。打开这个功能,使用:设置->关于手机,连续点击版本号(英文名 Build number)7 次,返回上一页,会出现开发人员选项。

2.从 Android Studio 运行 app

(1)从工具栏单击 Run

(2)在弹出 Choose Device 窗口,选择 Choose a running device 单选按钮,选择你的设备,单击 OK,Android Studio 安装 app 到你连接的设备上,然后启动应用。

第二章 Android Studio 基本概念

2.1 开发环境

Android Studio 功能强大,开发环境要介绍的知识很多,要是全部介绍对于初学者而言太多,不易掌握。这里先学习开发项目中常用到的知识,其它知识需要的时候再逐步掌握。当你学习完第一章后,再次打开 Android Studio 会默认自动打开进入最近的一次项目,如图2-1 所示

图 2-1 Android Studio开发环境

2.1.1 菜单

(1)新建项目:File->New->New Project

(2)打开项目:File->Open

(3)关闭项目:File->Close Project

(4)退出:File->Exit

2.1.2 工具栏

(1)运行:调试编译并运行项目

(2)模拟器:模拟器管理器,创建、删除、设置、运行模拟器

(3)SDK 管理器:下载安装 SDK

2.1.3 项目文件

按照功能不同,项目文件分布在不同文件夹里。

(1)Android 清单文件夹 appmanifests

里面只有一个文件 :

package="orld">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".MainActivity"

android:label="@string/app_name"

android:theme="@style/onBar">

android:name="ER" />

这里都是一些关于应用包的元数据。属性有命名空间mlns:android=/apk/res/android是自动生成 ,

包名package="orld",就是我创建项目时填写的。另外还有一些属性没有列出来,如应用程序的版本号,我们可以发布自己的 Android 应用,然后,我们可以修改漏洞、添加新特性,可以持续更新应用程序,用户就会在手机上收到通知,提示有新版本可用,他们于是可以下载并更新,所以版本号就是这样 1.5、2.0 之类的一段信息。清单还定义了子元素 application(应用),其属性有 android:icon(图标)。我们知道任何手机应用都会有图标,用户通过点击它打开程序,图标还可以自定义,这个元素就是起这个作用。android:label

(标签),用来显示应用名。Application 内部有一个或多个 activity(活动)元素,所谓 activity,就是为用户执行的一项任务,一个 Android 应用程序可以有一个或多个活动。在这个应用程序,只有一个活动名为MainActivity。另外还有 intent-filter(意图过滤器)元素,意图是指从活动转到其它活动,这个Manifest 所用的意图过滤器,其名为 , 它的

category( 类别 ) 是launcher(启动器),这个特殊的意图就是如果用户点击了菜单中的应用图标,这就是开始要运行的活动,这就像 C/C++中的 main 程序一样,这个意图过滤器定义了应用程序的进入点。

(2)代码文件夹 orld

这个文件夹是放代码文件的地方,目前只有文件 MainActivity

(3)资源文件夹 appres

这个文件夹存放项目所需的各种资源,包括子文件夹:

1)图片文件夹 drawable

2)布局文件夹 layout

布局就是界面设计,Android 使用 XML 文件定义用户界面,用 XML 文件描述屏幕视觉

元素的布局,在本应用程序中,使用项目创建向导时,它创建了这个activity_和作为 activity_ 一部分的 content_。

3)菜单文件夹 menu文件夹下有一个文件 menu_

4)图片文件夹 mipmap这个文件夹也是存放图片的,和 drawable 作用相同,但是用 mipmap 系统会在缩放上提供一定的性能优化。目前这里存放着启动图标,不同的图标适应不同的屏幕。

5)键值包括颜色、适配不同屏幕、字符串、样式。我们重点学习 .

HelloWorld

Settings

用户界面上文本是字符串,这些字符串可以放在 里。如HelloWorld,它的键是 app_name,值是

HelloWorld。试着把 HelloWorld 改为“你好,世界!”总要指定字符串,这个字符串资源文件可以管理所有的 UI 文本,使得开发人员容易地管理、更新文本,以及 app 多语言国际化。Android 应用或其它移动应用发布到国际上,可能需要应用不同翻译版本,这类数据不应该嵌入源码中,二进制代码不需要改变,中文版和英语版的代码应该一样,所有供用户阅读的文本数据,都应该提出来,放到资源 XML文件中,需要和代码分开。

2.1.4 视图 view

Android Studio 有丰富的控件,如按钮、文本框、进度条等等成为视图 View,以后我们会逐步应用到它

2.1.5 布局

布局可以看出界面设计,可以把控件拖拽到布局上,也可以写布局代码设计,单击底部的 Design 和 Text,可视化布局和代码布局切换。

尽管做了介绍,但是只有通过项目才能掌握 Android Studio 开发环境。

2.2 建立简单的用户界面

Android Studio 代码和界面(布局)是分开的,如前所述,分别放在不同文件夹下。一般来说,一个代码文件对应一个界面(布局)文件。如

orldMainActivty 是代码文件,它对应的布局文件是reslayoutactivity_,Android Studio 用 XML 文件描述界面。可 content_ 是什么呢?切换到底部 Text 选项卡,出现了

activity_ 文本,里面有一行:

content_ 是 activity_ 的一部分,activity_

定义了顶部和底部的母版,所以我们直接操作 content_ 就可以了,现在打开它。它是非常简单的 UI 布局,content_ 的根节点

RelativeLayout 是表示相对布局的方式,后面我们会专门学习布局。作为初学者,我们学习最简单的一种布局:LinearLayout(线性布局)。把 RelativeLayout

替换成 LinearLayout,并删除掉控件,结果是这样:

xmlns:android="/apk/res/android"

xmlns:tools="/tools"

xmlns:app="/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:showIn="@layout/activity_main" tools:context=".MainActivity">

LinearLayout 能让我们以线性形式布局一系列视图元素,里面的控件可以按从左到右或自上而下自动排列。控制水平布局还是垂直布局的属性

android:orientation (方向 ),设为 vertical ,这些视图将以垂直方式排列。现在设为 horizontal,让它内部控件按水平方向排列。android:layout_width="match_parent"和

android:layout_height="match_parent"分别指示这个边界分别和父容器的宽度和高度同等,它的父容器就是手机屏幕,这样,app 就能填充整个屏幕。

这里要实现的是在 XML 里创建包括文本和按钮的 View,这里 View 可以理解为视图、控件。当按下按钮,会发送文本内容到其它界面处理。现在我们往里面添加控件(view),用Design 模式拖拽控件到界面上,但为了省去寻找 view 的麻烦,又训练我们对 view 的理解,在 Text 模式手工填写:

xmlns:android="/apk/res/android"

xmlns:tools="/tools"

xmlns:app="/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

android:paddingBottom="@dimen/activity_vertical_margin"

app:layout_behavior="@string/appbar_scrolling_view_behavior"

tools:showIn="@layout/activity_main" tools:context=".MainActivity">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:hint="@string/edit_message"/>

添加了编辑框 EditText 和按钮 Button,我们看看 EditText 的写法。android:id="@+id/edit_message":识别 view 的唯一的 id,有了这个 id,在程序里可以用 id操作这个对象。定义 id 的格式为:@+id/名称,注意@+id/是固定的,反斜杠后的名称才是你自由取名字。引用 id 的格式为:.资源名称,我们学习代码时会用到。这种方式资源 ID 只声明一次,引用 ID 不需要加上+号。仅在指定新资源 ID 是才需要+号,诸如 string、布局等具体资源不需要+号。android:layout_width 和 ndroid:layout_height:可以不用具体的数值,wrap_content 意思是能够包裹住它内容的,仅用于适应视图内容,表示宽度或高度上需要用多少就是多少,而EditText 使用默认字体,平台知道该字体有多高,由此可知该 EditText 需要的高度。如果是match_parent,EditText

元素会充满屏幕,因为它将要适应父元素 LinearLayout 的大小。android:hint="@string/edit_message"是编辑框空的时候出现的默认字符串,也就是这个编辑框的提示文本,而文本属性值是@string/edit_message, 是因为引用具体资源(而不是标识符),不需要+号。这个字符串的具体值定义在另一个文件的字符串资源上。前面我谈到的软件国际化,应用中的字符串不要硬编码,因为发布的时候,可能需要面向多个国家,这些字符应该独立出来。做法是这样:@string 表示该字符串定义在其它 XML 文件中,它在 values 目录下,名为

,打开它,其中有一个 string 元素,name 属性为 hello,内容是"HelloWorld,IntroActivity!"回头看 main 文件,该引用是说:要输入到屏幕的这个字段,实际数据在 文件中,实际显示的是这一段。如果要翻译为英语,只需新建一个文件,一个英语版的 即可。程序没有变化,只是使用不同资源数据来填充字段。"@string/edit_message"因为尚未定义字符串资源,这里会有个编译错误提示,下面定义它。

2.3 字符串资源文件

我们把 app 的显示文本定义在字符串资源文件里,可以统一管理。打开

Android 项目字符串资源文件 ,新增两行:

输入一条信息

发送

第一个作为上面编辑框的提示文本,第二个是按钮视图的文本,我们后面会用到。增加后的文件内容为:

HelloWorld

Settings

输入一条信息

发送

2.4 增加一个按钮

回到 appreslayoutactivity_

1在元素里,在元素后定义一个