Android程序设计基础 • 【第1章 Android程序入门】
全部章节 >>>>
本章目录
1.1 Android 平台介绍
1.1.1 Android 简介
Android 一词本意指“机器人”,它是一种基于 Linux 的自由及开放源代码的操作系统,主要用于移动设备,如智能手机和平板电脑,由 Google 和开放手机联盟主导开发
Android 操作系统最初由 Andy Rubin 开发,主要用于手机
小米、华为和魅族等新兴品牌都推出了相当不错的 Android手机,并且也获得了市场的广泛认可,目前 Android 已经占据了全球智能手机操作系统 70% 以上的份额
1.1.2 Android 平台的发展
随着互联网 3G/4G 时代的来临,国家斥巨资发展移动互联网产业,移动互联网前景一片大好。通过大数据分析,2012—2019 年,智能手机用户猛增 240%,高达 11 亿用户,而 Android 系统的手机用户占比 74%
Android 是第一个完整、开放、免费的操作系统平台,将会促使移动设备创新,使用户体验到最优越的移动服务;同时,开发商也将获得全新的开放级别,便于协同合作的开展,保证新型移动设备的研发速度。
目前,市面上主要的 Android 系统版本及其详细信息见
版本号 |
系统代号 |
API |
市场占有率 |
2.2 |
冻酸奶 |
8 |
0.1% |
2.3.3 ~ 2.3.7 |
姜饼 |
10 |
1.5% |
4.0.3 ~ 4.0.4 |
冰淇淋三明治 |
15 |
1.3% |
4.1.x、4.2.x、4.3 |
果冻豆 |
16、17、18 |
5.6%、7.7%、2.3% |
4.4 |
奇巧 |
19 |
27.7% |
5.0、5.1 |
棒棒糖 |
20、21 |
13.1%、21.9% |
6.0 |
棉花糖 |
23 |
18.7% |
7.0 |
牛轧糖 |
24 |
0.1% |
1.1.3 Android 平台架构
从软件分层的角度而言,Android 系统由应用层、应用框架层、系统运行库层和 Linux 内核层组成
- 应用层:应用层位于最上层,该层的所有应用都是使用 Java 语言编写并运行在虚拟机上的程序
- 应用框架层:应用框架层主要提供了构建应用程序时可能用到的各种 API,Android 自带的一些核心应用就是使用这些 API 完成的,开发者也可以通过使用这些 API 来构建自己的应用程序
- 系统运行库层:系统运行库层通过一些 C/C++ 库来为 Android 系统提供了主要的特性支持
- Linux 内核层: Android 基于 Linux 2.6 提供核心系统服务,如安全、内存管理、进程管理、网络堆栈和驱动模型等
Android 自发布以来备受关注,越来越多的开发者基于 Android 系统开发应用。与其他手机操作系统相比,Android 具有许多无可比拟的优点,其优势主要表现在以下 5 个方面:
- 开放性:Android 由 Google 与开放手机联盟合作开发而成,该联盟由 30 多家技术和无线应用的领军企业组成
- 平等性:在 Android 系统中,所有应用程序完全平等,系统默认自带程序与程序员自主开发的程序差别甚微
- 无界性:Android 中的应用程序可以通过标准 API 访问核心移动设备的功能
- 便捷性:Android 平台手机无缝结合 Google 的优秀服务
- 硬件丰富性:同样基于 Android 系统的开放性,众多硬件厂商可以推出各种搭载 Android 系统的设备
1.2 搭建 Android 开发环境
1.2.1 下载和配置 Android Studio
Android 开发可以使用 Windows、Mac OS、Linux 等平台的操作系统(本书选择 Windows 10),开发时需要的软件名称、使用版本及下载地址见表
软件名称 |
使用版本 |
下载地址 |
JDK |
1.8 |
https://www.oracle.com/technetwork/java/javase/downloads/index.html |
Android Studio |
3.2.1 |
https://developer.android.google.cn/studio/index.html |
Android SDK |
5.1 |
http://developer.android.com/sdk/index.html |
Genymotion |
2.12.2 |
https://www.genymotion.com/ |
下载和安装 Android Studio 的操作步骤
1、点击 DOWNLOAD ANDROID STUDIO 按钮,在弹出的对话框上点击同意许可条款并下载 Windows 版本的 Android Studio
2、双击下载的安装文件,进行安装
3、点击“Next”,勾选所有的安装项。选择安装项
4、点击“Next”,设置 Android Studio 开发工具的安装路径
1.2.2 初始化配置 Android Studio
在“开始”菜单中选择 Android Studio 图标,打开开发工具。选择 Android Studio 开发工具
在弹出的对话框中,提示让用户选择是否导入之前 Android Studio 版本的配置文件,首次安装,选择不导入
在弹出的对话框上点击“Cancel”按钮
进入到 Android Studio 的配置页面
点击“Next”选择安装类型
点击“Next”,选择主题
点击“Next”完成配置工作
点击“Finish”按钮,配置工作全部完成,Android Studio 会尝试联网下载一些组件,组件下载完成后点击“Finish”按钮,进入到 Android Studio 欢迎界面
1.2.3 配置和使用 Genymotion 模拟器
使用 Genymotion 必须先注册,在 Genymotion 官网注册并激活账号。打开 Genymotion 的下载页面,登录账号,下载最新的Genymotion
下载带有 Virtual Box 的 Genymotion 安装文件进行安装,在安装过程中,设置好安装路径,根据安装向提示进行安装即可
打开 Genymotion 模拟器,点击“Add”按钮添加 Android 版本虚拟机。在弹出的“Virtual device creation wizard”窗口中,使用 Genymotion 账号登录(没有登录的情况下无法完成后续配置)
登录完成后,在“Virtual device creation wizard”窗口的“Android version”下拉选项中选择要下载的Android 虚拟机版本
在“Virtual device creation wizard”窗口的“Device model”下拉选项中选择要下载的 Android 虚拟机设备类型,可供选择的有通用手机类型、平板类型、Google 虚拟机、Sony 虚拟机等。选择通用手机类型即可。点击“Next”,为新创建的虚拟设备命名,继续点击“Next”,下载 Android 5.1 通用手机版本的虚拟机
下载完成后, 点击“Finish” 按钮, 回到“Genymotion for personal use” 窗口, 选 需要打开的Android 虚拟机,点击“Start”按钮,启动 Android 虚拟机
1.2.4 实践练习
1.3 创建和运行第一个 Android 应用程序
1.3.1 开发 Android 应用程序
启动 Android Studio 后,开发工具将打开上一次的工程。可以通过工具栏中的“File” “Close Project”关闭当前打开的工程,选择“Start a new Android Studio project”创建新工程
单击“Start a new Android Studio project”,弹出填写项目基本信息的界面,在界面中相应的位置填写 Android 工程名和工程保存路径
在图 1.21 中填写项目信息之后单击“Next”,配置项目所运行的平台,如可穿戴设备、电视和 Google 眼镜
填写项目信息之后单击“Next”,跳转到创建 Activity 界面,界面中列出来了 Activity 的一些内置模板,选择一个较为简洁的模板 Empty Activity 来创建一个空的 Activity
选择 Activity 模板后单击“Next”,为创建的 Activity 和视图命名
Activity Name 表示创建的 Activity 的名字,这里填入 MainActivity,Layout Name 表示布局的命名,这里填入 activity_main。然后点击“Finish”按钮,并耐心等待一会儿,项目就会创建成功
1.3.2 运行 Android 应用程序
由于 Android Studio 自动生成了很多代码和文件,所以不需要编写任何代码应用程序就已经可以运行了。但是在运行之前还必须要有一个运行的载体,可以是一部 Android 手机,也可以是 Android 模拟器
使用 Genymotion 模拟器运行 Android 应用程序
观察 Android Studio 顶部工具栏中的图标,其中左边的锤子按钮是用来编译按钮的,中间的下拉列表是用来选择运行哪一个项目的,通常 app 就是当前的主项目,右边的三角形按钮是用来运行项目的
启动 Genymotion 模拟器,点击 Android Studio 工具栏中的运行按钮,弹出运行设备的选择对话框
选中启动的 Genymotion 模拟器,点击“OK”按钮,Android 应用程序就会运行到模拟器上
1.3.3 实践练习
1.4 Android 应用程序的目录结构
1.4.1 Android 工程目录结构
使用 Android Studio 工具创建的工程,工程目录目录结构包含以下 3 个部分:
- manifests:用于存放工程的配置文件,如 AndroidManifest.xml 文件。它是整个程序的系统控制文件,存在于每个应用程序中,程序中定义的 Activity 等组件都需要在这个文件中注册,同时还可以在这个文件中给应用程序添加权限声明。
- Java:用于存放所有包及 Java 源代码,代码包括源程序和测试程序。开发 Android 程序时,编写该目录下的源代码占用了大量时间
- res:包含多个目录,如 drawable、layout、values 和 mipmap 等,分别用于存放项目工程中使用的图片、布局文件、字符串文件和存放自动缩放图片的目录。其中 values 目录中包含很多 XML 描述文件,包括字符串定义、颜色定义、样式定义和长度定义等
1.4.2 Android 代码解释
AndroidManifest.xml 文件是 Android 应用程序的配置文件,在 HelloWorld 应用中AndroidManifest.xml代码如下
<?xml version="1.0" encoding="utf-8"?>
<!-- 整个应用程序的配置文件,程序中的组件都需要在这个文件中注册和配置 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ziniu.android">
<!-- application标签主要用于配置整个应用程序的基本信息,包括程序使用的图标和应用程序的名称 -->
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!-- activity 标签用于配置 Activity 的基本属性,包括 Activity 的名称 -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
AndroidManifest.xml 文件的具体说明见表:
名称 |
说明 |
activity |
与用户交互的主要工具。Activity 是应用程序的门面,凡是在 应用中看到的东西,都是放在 Activity 中的 |
android:name |
Activity 的名称 |
intent-filter |
Intent 过滤器 |
action |
组件支持的 Intent Action |
category |
组件支持的 Intent Category |
MainActivity 类的代码如下:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
需要重写 onCreate() 方法
MainActivity 类说明:
- 主程序 MainActivity 类继承自 AppCompatActivity 类,这是一种向下兼容的 Activity,可以将 Activity 在各个系统版本中增加的特性和功能最低兼容到 Android 2.1 系统
- Activity 是 Android 系统提供的一个 Activity 基类,项目中所有的 Activity 都必须继承它或者它的子类才能拥有 Activity 的特性 重写了 onCreate(Bundle savedInstanceState) 方法,这个方法是一个 Activity 被创建时必定要执行的方法
- Android 程序的设计讲究逻辑和视图分离,因此不推荐在 Activity 中直接编写界面,更加通用的一种做法是,在布局文件中编写界面,然后在 Activity 中引入进来可以看到,onCreate() 方法中调用了 setContentView()方法,setContentView() 方法中引入了一个 activity_main 布局文件,这个布局文件就是应用程序显示的界面
activity_main.xml 文件是 MainActivity 的布局文件,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.ziniu.android.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
MainActivity 类的布局文件说明:
<ConstraintLayout>:定义一个扁平化布局
android:layout_width:定义当前视图在屏幕中所占的宽度。
match_parent 将屏幕的宽度作为布局的宽度
android:layout_height:定义当前视图在屏幕中所占的高度
activity_main 的布局文件中设置了一个 TextView 控件,用于显示文本内容
- android:layout_width:属性值 wrap_content 根据文字宽度而改变控件宽度
- android:layout_height:属性值 wrap_content 根据文字高度而改变控件高度
- android:text:设置该 TextView 需要显示的文字内容
HelloWorld 项目中的 strings.xml 文件代码如下:
<resources>
<string name="app_name">HelloWorld</string>
</resources>
在代码中通过 R.string.app_name 可以获得该字符串的引用 在 XML 文件中通过 @string/app_name 可以获得该字符串的引用
1.4.3 实践练习
总结:
- Android 系统可分为:应用层、应用框架层、系统运行库层和Linux 内核层
- 搭建 Android 开发环境需要安装:JDK、Android Studio、Android SDK和Genymotion Android
- 应用程序的目录结构包含:manifests、Java和res
Android程序设计基础 • 【第1章 Android程序入门】的更多相关文章
- Android进阶加密-第1章-Android系统架构-读书笔记
第 1 章 Android 系统架构 1.1 Android 系统架构 Android 系统架构分为五层,从上到下依次是应用层.应用框架层.系统运行库层.硬件抽象层和 Linux 内核层. 应用层(S ...
- Android进阶之光-第1章-Android新特性-读书笔记
第 1 章 Android 新特性 1.1 Android 5.0 新特性 1.1.1 Android 5.0 主要新特性 1. 全新的 Material Design 新风格 Material De ...
- PHP-----PHP程序设计基础教程----第一章PHP开篇
本章内容知识体系如下所示: 一.PHP基础知识 1.1 Web技术 服务器与客户端 服务器:能够提供某种服务的电脑 客户端:想使用服务器所提供服务的电脑 服务器也是一台电脑,必须安装操作系统.否则就是 ...
- PHP-----PHP程序设计基础教程----第二章PHP基本语法
博文结构: 2.1 PHP语法风格 2.1.1 PHP标记 PHP有四种风格的标记,具体如表2-1所示: 表2-1 PHP开始和结束标记 标记类型 开始标记 结束标记 示例 说明 标准标记 <? ...
- Java程序设计基础第4章习题与自总
怎么说呢?不论什么编程题,都有很多种方法解决问题,最后能解决我们所提出的问题才是关键的东西,也是未来成为工程师所需要的能力.解决问题是关键, 当我们做好了问题解决的关键途径的时候,如果有着profou ...
- Python语言程序设计基础(2)—— Python程序实例解析
温度转换 def tempConvert(ValueStr): if ValueStr[-1] in ['F','f']: ans = (eval(ValueStr[0:-1]) - 32)/1.8 ...
- C语言程序设计基础知识点概括
C语言程序设计基础知识点概括 C语言程序设计基础知识点1.函数是C语言的基本构成单位.main函数是C语言程序的唯一入口.2.C语言程序开发过程. 编译过程:将以.c或.cpp结尾的源程序文件经过编译 ...
- Android程序设计基础作业目录 (作业笔记)
Android程序设计基础 • [目录] 第1章 Android程序入门 >>> 1.2.4 安装并配置 Android Studio 开发工具和 Genymotion 模拟器. 1 ...
- Android程序设计基础 • 【目录】
章节 内容 实践练习 Android程序设计基础作业目录 (作业笔记) 第1章 Android程序设计基础 • [第1章 Android程序入门] 第2章 Android程序设计基础 • [第2章 基 ...
随机推荐
- mybatis-plus解析
mybatis-plus当用lambda时bean属性不要以is/get/set开头,解析根据字段而不是get/set方法映射
- redis入门到精通系列(一)
(一)为什么要用Nosql 如果你是计算机本科学生 ,那么一定使用过关系型数据库mysql.在请求量小的情况下,使用mysql不会有任何问题,但是一旦同时有成千上万个请求同时来访问系统时,就会出现卡顿 ...
- 【编程思想】【设计模式】【行为模式Behavioral】chaining_method
Python版 https://github.com/faif/python-patterns/blob/master/behavioral/chaining_method.py #!/usr/bin ...
- shell脚本统计多个CPU利用率
本节主要内容:top命令统计CPU的利用率 一,问题分析 MySQL在Linux下是多线程的,而且只能将多个线程分布到一个CPU上.因此,使用小型服务器,或者PC SERVER,多个CPU利用率并不高 ...
- feignclient发送get请求,传递参数为对象
feignclient发送get请求,传递参数为对象.此时不能使用在地址栏传递参数的方式,需要将参数放到请求体中. 第一步: 修改application.yml中配置feign发送请求使用apache ...
- java中的迭代器的含义
可迭代是Java集合框架下的所有集合类的一种共性,也就是把集合中的所有元素遍历一遍.迭代的过程需要依赖一个迭代器对象,那么什么是迭代器呢? 迭代器(Iterator)模式,又叫做游标模式,它的含义是, ...
- mybtis入门
1.编写持久化对象 public class User { private String id;//用户编号 private String username;//用户名 private String ...
- seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案
seata服务端和客户端配置(使用nacos进行注册发现,使用mysql进行数据持久化),以及过程中可能会出现的问题与解决方案 说明: 之所以只用nacos进行了注册与发现,因为seata使用naco ...
- 使用.NET 6开发TodoList应用(3)——引入第三方日志库
需求 在我们项目开发的过程中,使用.NET 6自带的日志系统有时是不能满足实际需求的,比如有的时候我们需要将日志输出到第三方平台上,最典型的应用就是在各种云平台上,为了集中管理日志和查询日志,通常会选 ...
- LuoguP5690 [CSP-S2019 江西] 日期 题解
Content Alice 在纸上写下了一个日期,形式为 \(\text{MM-DD}\),其中 \(\text{MM}\) 与 \(\text{DD}\) 都是两位数字,分别表示月和天,然而这个日期 ...