Android App开发入门:使用Android Studio 2.X开发环境

更多详情

内容简介: 本书从初学者的角度出发,通过通俗易懂的语言、丰富的实例,详细介绍使用Android Studio 2.X开发环境开发Android应用程序应该掌握的各种技术。
全书共分16章,内容包括:使用Android Studio开发Android App,Android程序设计基础讲座,应用程序界面设计,事件处理,用户界面的基本组件,高级UI组件,即时消息与对话框,用Intent启动程序中的其他Activity,用Intent启动手机内的各种程序,拍照与显示照片,播放音乐与视频,用传感器制作水平仪与体感控制,WebView与SharedPreferences,GPS定位、地图与菜单, SQLite数据库,Android互动设计等。书中所有知识都结合具体实例进行介绍,以使读者轻松领会Android应用程序开发的精髓,快速提高开发技能。
本书既适合作为大专院校和社会培训学校的教材,又适合有基础编程经验的读者自学。

目录: 推荐序
前言
关于范例程序
第1章使用 Android Studio开发 Android App
1-1创建第一个 Android App 项目 2
1-2在计算机的仿真器上执行 App 11
创建 Android 仿真器 11
在仿真器上执行 Android App 14
仿真器的操作技巧 18
调整仿真器的语言、时区及删除 App 20
在 Android Studio 中查看仿真器与 App 的执行情况 22
1-3Android Studio 快速上手 23
认识 Android Studio 的操作环境 24
打开最近使用过的项目 27
项目的移动、复制与删除 28
打开“移动或复制后”或“外来”的项目 29
1-4Android 项目的构成 30
Android 资源文件的“多版本”特色 32
第2章Android 程序设计基础讲座
2-1Android App 的主角:Activity 40
Activity 40
Android App 的组成 40
2-2Android 程序的设计流程 41
视觉设计和程序逻辑 41
用图形化界面做视觉设计 43
用Java编写程序逻辑 44
把视觉设计与程序代码构建起来 44
2-3认识 Activity 的基本程序逻辑 45
初识 MainActivity 框架 45
onCreate():MainActivity 第一件要做的事 46
setContentView():载入布局文件 48
资源ID 48
2-4组件的布局与属性设置 50
id 属性 52
ndViewById() 方法 53
textView的常见属性 54
在属性中设置引用 54
在属性中设置方法的名称 56
2-5开始动手编写程序 56
范例2-1:单击按钮就放大显示文字 57
2-6输入字段 EditText 组件 76
getText():获取用户输入的文字 76
setText():设置 TextView 显示的文字 77
范例2-2:加入 EditText 组件 77
2-7使用 USB 线将程序部署到手机上执行 82
打开手机调试功能 82
通过 USB 将 Android App 传送到手机安装并执行 83
执行已安装的程序 85
2-8修改项目的程序包名称和应用程序 ID 85
第3章Android App界面设计
3-1View 与 ViewGroup(Layout):组件与布局 94
View:视觉组件 94
View 组件的属性与设置 95
再谈 id 属性 96
Layout:界面布局 98
3-2使用 LinearLayout 建立界面布局 100
LinearLayout:按序排列组件 100
范例3-1:在布局中使用 LinearLayout 101
范例3-2:使用 LinearLayout (Horizontal) 创建窗体 103
imputType 属性:设置输入字段种类 110
范例3-3:加入输入电话专用的 EditText 110
3-3使用 weight 属性控制组件的宽 / 高 114
范例3-4:利用 weight 属性对齐组件 115
3-4通过属性美化外观 117
组件的边界:margins 与 paddings 117
范例3-5:设置边界让输入窗体版面变宽松 119
颜色:以RGB值设置文字或背景颜色 120
范例3-6:设置文字及背景颜色 120
3-5用程序设置组件的外观属性 125
setTextColor():改变文字颜色 125
范例3-7:变色龙——以随机数设置颜色属性 126
3-6使用 ConstraintLayout 提升设计与执行的性能 130
ConstraintLayout 的运行原理 130
范例3-8:学习 ConstraintLayout 的使用 131
约束的种类 137
让组件可以动态重设大小与位置 138
使用引导线 140
自动连接与推断约束 141
3-7使用 Gmail 将程序寄给朋友测试 144
设置可以安装非 Google Play 商店下载的程序 144
将程序寄给朋友安装 144
第4章与用户互动——事件处理
4-1事件处理的机制 150
来源对象与监听对象 150
Java 的接口 150
4-2“单击”事件的处理 153
范例4-1:每单击一次按钮,就让计数器加 1 153
4-3监听“长按”事件 158
onLongClick():处理“长按”事件 158
范例4-2:长按按钮将计数值归零 158
4-4处理不同来源对象的相同事件 160
getId():判断事件的来源对象 160
范例4-3:长按按钮计数加 2,长按计数值归零 161
4-5监听“触控”事件让手机震动 165
onTouch():触控事件的处理 165
如何让手机震动 166
范例4-4:监听 TextView 的触控事件 166
在程序中登记“震动”的权限 167
第5章用户界面的基本组件
5-1多选一的单选按钮 175
RadioButton 与 RadioGroup 组件 175
getCheckedRadioButtonId():读取单选按钮状态 175
范例5-1:读取 RadioGroup 选取的选项 176
onCheckedChanged():选项改变的事件 182
范例5-2:利用 RadioButton 选择温度转换单位 183
5-2可复选的复选框 192
isChecked():检查是否被选取 192
范例5-3:以复选框创建餐点选单 192
onCheckedChanged():选取 / 取消复选框的事件 196
范例5-4:利用选取事件实时修改订单 197
5-3显示图像的 ImageView 203
使用 Android 系统内建的图像资源 203
范例5-5:显示系统内建图像 203
使用自行提供的图像资源 205
范例5-6:为选单加上图片 206
图像的缩放控制 213
第6章高级UI组件:Spinner与 ListView
6-1Spinner 选单组件 219
Spinner 组件的属性设置 219
用getSelectedItemPosition()读取Spinner组件的选项 220
范例6-1:使用 Spinner 设计购票程序 221
onItemSelected():Spinner 组件的选择事件 225
范例6-2:运动能量消耗计算器 225
6-2ListView 列表框 231
onItemClick(): ListView 的单击事件 232
范例6-3:使用 ListView 创建选单 232
6-3在程序中变更 Spinner 的显示选项 236
ArrayAdapter:Spinner 与数据的桥梁 236
ArrayAdapter():创建 ArrayAdapter 对象 236
setDropDownViewResource():设置选单选项的显示样式 237
setAdapter():将 ArrayAdapter 与 Spinner 绑在一起 238
范例6-4:使用 Spinner 制作饮料订单 238
第7章即时消息与对话框
7-1使用 Toast 显示即时消息 246
Toast 类 247
范例7-1:脑筋急转弯—用 Toast 显示答案 247
Toast 信息的取消显示与更新显示 250
范例7-2:实时显示答案的脑筋急转弯 251
7-2使用 Snackbar 显示即时信息 253
范例7-3:脑筋急转弯 —— 用 Snackbar 显示答案 254
7-3使用 Alert 对话框 256
AlertDialog 类 256
AlertDialog.Builder:设置与创建 Alert 对话框 257
setCancelable():设置按返回键关闭对话框 257
show():创建并显示对话框 257
创建 Alert 对话框的简洁写法 258
范例7-4:显示欢迎信息的对话框 258
在对话框中加入按钮 260
范例7-5:Android问卷调查 261
7-4使用日期、时间对话框 264
DatePickerDialog 与 TimePickerDialog 类 265
onDateSet() 与 onTimeSet():获取选取的日期与时间 266
范例7-6:日期时间选择器 267
第8章 用 Intent 启动程序中 的其他 Activity
8-1在程序中新增 Activity 274
8-2用 Intent 启动程序中的 Activity 276
startActivity():用显式 Intent 启动 Activity 276
finish():结束 Activity 277
8-3在 Intent 中夹带数据传给新的Activity 280
putExtra():附加数据到 Intent 中 280
getIntent() 与 getXxxExtra():从 Intent 中取出数据 281
8-4要求新的 Activity 返回数据 287
第9章 用 Intent 启动手机内的各种程序
9-1使用 Intent 启动程序的方式 295
setAction()和setData():加入动作和数据到 Intent 中 296
Uri:Intent 的数据 296
范例 9-1:快速拨号程序 297
9-2使用 Intent 启动电子邮件、短信、浏览器、地图与 Web 搜索 299
电子邮件地址 299
短信 301
网址 301
经纬度坐标值 301
搜索 Web 数据 301
范例9-2:使用 Intent 启动电子邮件、短信、浏览器、地图与 Web 搜索 302
从启动的程序返回数据 306
第10章 拍照与显示照片
10-1使用 Intent 启动系统的相机程序 309
利用 Bundle 取出 Intent 中附带的 Bitmap 对象 309
范例10-1:利用系统的相机程序拍照 310
10-2要求相机程序存盘 314
准备代表图像文件路径的 Uri 314
读写文件的危险权限 315
用 BitmapFactory 类读取图像文件 317
范例 10-2:要求相机程序存盘并在程序中显示出来 318
10-3解决照片过大的问题 321
用 BitmapFactory.Options 设置加载图像文件的选项 321
范例10-3:按显示尺寸加载缩小的图像文件 322
10-4旋转手机与旋转照片 324
关闭自动旋转功能并设置屏幕为直向显示 325
用 Matrix 对象旋转图片 326
范例 10-4:按照片是直拍还是横拍自动旋转照片 326
10-5使用 Intent 浏览并选取照片 330
将照片改为可供系统共享的文件 331
范例10-5:利用 Intent 浏览并选取已拍好的照片 332
第11章 播放音乐与视频
11-1使用Intent选取音乐或视频 339
读取预存在程序中的多媒体文件 341
范例11-1:让用户挑选影音文件 341
11-2用 MediaPlayer 播放音乐 347
MediaPlayer 的音乐播放流程 347
MediaPlayer 可引发的 3 个重要事件 348
处理在播放音乐时切换到其他程序的情况 349
让屏幕不进入休眠状态 350
范例11-2:用 MediaPlayer 播放音乐 351
11-3用 VideoView 播放视频 358
使用 VideoView 搭配 MediaController 播放视频 359
用程序控制 VideoView 的视频播放 359
设置全屏幕显示 360
处理在播放视频时切换到首页或其他程序的情况 361
处理在播放时旋转手机的情况 362
范例11-3:打开新的 Activity 播放视频 363
11-4在 Android 7 的多窗口模式下播放影音 368
范例11-4:让播放器支持多窗口模式 369
第12章用传感器制作水平仪与体感控制
12-1读取加速传感器的值 374
认识加速传感器 374
获取系统的传感器对象 375
读取传感器的值 375
范例12-1:显示加速传感器的加速度值 377
12-2利用 x、y 轴的加速度值制作水平仪 380
利用左边界与上边界移动图片 380
范例12-2:利用加速传感器制作水平仪 382
12-3利用加速传感器做体感控制 385
检测手机面朝下平放的状态 385
检测手机摇动 386
范例12-3:利用加速传感器控制音乐播放 386
第13章WebView 与 SharedPreferences
13-1使用 WebView 显示网页 393
范例13-1:显示京东网站 393
13-2改进 WebView 功能 397
使用 WebSettings 启用网页缩放和 JavaScript 398
使用 WebViewClient 打开超链接 399
使用 WebChromeClient 创建网页加载进度界面 399
使用ProgressBar 显示进度条 401
使用 onBackPressed() 实现回上一页功能 402
范例13-2:改善 WebView 行为 402
13-3使用 SharedPreferences 记录信息 406
使用 SharedPreferences 对象存储数据 407
读取首选项数据 408
存储/恢复数据的时机:onPause()/onResume() 408
范例13-3:ickr 照片快搜 409
第14章GPS定位、地图、菜单
14-1获取手机定位数据 419
LocationManager:系统的定位管理器 419
定位提供者 419
用 getBestProvider() 方法获取定位提供者名称 420
请求用户授权 420
用 requestLocationUpdates() 注册位置更新事件的监听器 421
用 isProviderEnabled() 方法检查定位提供者是否可以使用 421
实现 LocationListener 接口 421
用 removeUpdate() 方法取消注册监听器 423
范例14-1:获取所在位置(经纬度) 423
14-2定位信息与地址查询 432
用 Geocoder 类做地址查询 432
Address 地址对象 433
范例14-2:地址专家——用经纬度查询地址 433
14-3在程序中显示 Google Map 438
使用 Google Map 的前置准备 438
如何使用 Google Map 439
范例14-3:在 Google Map 中显示当前所在位置 444
14-4为Activity添加菜单 456
Activity默认的菜单 456
设置菜单的内容 457
编写菜单所需的两个方法 460
范例14-4:为程序加上菜单 460
第15章SQLite 数据库
15-1认识 SQLite 数据库 471
数据库、数据表、数据字段 471
使用 CREATE TABLE 语句创建数据表 471
使用 openOrCreateDatabase() 创建数据库 472
用 execSQL() 方法执行 CREATE TABLE 语句 473
用 insert() 方法和 ContentValues 对象新增数据记录 473
范例15-1:创建数据库和数据表 474
15-2查询数据及使用 Cursor 对象 476
使用 SELECT 语句进行数据查询 476
使用 Cursor 对象获取查询结果 477
使用 Cursor 对象的 getXXX() 方法读取数据 478
范例15-2:使用 Cursor 对象读取查询结果 478
15-3热线通讯家 481
使用 SimpleCursorAdapter 自定义 ListView 版面 482
数据表的“_id”字段 483
范例15-3:热线通讯家 484
第16章Android互动设计——蓝牙遥控自走车 iTank
16-1让 Android与外部设备互动 497
iTank智能型移动平台基本款简介 497
FlagAPI 简介 498
16-2点亮 iTank 控制板上的 LED 灯 499
点亮 LED 的指令 500
范例16-1:点亮 LED1 500
16-3手机蓝牙遥控 iTank 508
FlagTank 类 508
范例16-2:手机蓝牙遥控车 508
附录AOO与Java:一招半式写 App
A-1 对象与类 516
属性与行为 516
类 516
对象 517
存储对象的变量只是一个转向器 518
指向自己的 this 变量 519
重载的方法 521
对象的构造函数 522
static:类变量与方法 524
A-2继承与接口 527
extends:继承 527
Override:重写父类中的方法 529
接口 530
A-3类库与程序包 535
程序包 535
用 import 导入程序包名称 536
用 package 将类包装在程序包中 538
附录B常用的Android Studio选项设置
B-1快速找出想要设置的选项 541
B-2设置文件编码方式 542
B-3显示行号 543
B-4调整字号 543
B-5设置自动化的 Import 功能 545
B-6调整各类警告与错误的检查功能 545
B-7设置使用自行安装的Java JDK版本 546
附录C使用旧项目或外来项目时的问题排除
更新项目所使用的 SDK 版本 552
附录D关于 Android 的 XML 556
D-1 认识 XML 557
D-2 Android 的 XML 文件 558
附录E导入 ADT 项目 561
导入 ADT项目后中文变成乱码 564

前言: 学习 Android 程序设计一直困扰着许多初学者,原因有两个。首先,必须学会使用 Java 程序设计语言,并且要懂 Android 的 XML词汇,然后才能开始学习 Android 的程序设计。其次,在学习的过程中常见到一些程序设计老手所使用的行话与习惯,初学者常会苦思不得其解,从而导致在学习中产生挫折感、困顿不前。鉴于此,本书针对 Android 的初学者设计了一套学习流程,期望降低初学者学习的门槛,让学习曲线平滑、顺畅,使初学者能迅速掌握 Android 程序设计的重点,而不用浪费过多的时间。
许多人都说学 Android 需要先学 XML,但是事实上学 Android 并不需要先学 XML,而是要学 Android 的 XML词汇。这两者可谓天壤之别。对于前者,你可能要读完一本厚厚的 XML大全集,但是掌握 Android 的 XML词汇就简单多了。我们还会以图形化界面的编辑器来完成界面布局的 XML设计,这就和在游戏里布置房间或建设城堡一样简单。再者,初学阶段的 Android 程序设计所用到的 Java 语言不需要初学者完完整整地阅读一本厚达七八百页的 Java 程序设计语言教科书,只需发挥三成 Java程序设计语言的功力,就可以轻松写好 Android 程序了。
因此,初学者真正要做的就是学习 Android的程序架构和 Android API 的使用,并运用自己的创意开发手机或平板电脑的应用。本书并不是 Android 的程序应用大全集,目的是帮助对 Android程序设计感兴趣的人排除学习中的障碍,以便顺利进入 Android程序设计的领域。读完本书,如果需要进一步学习 Android更广的领域,可以参考其他相关书籍。
施威铭

序言: 言
目前,以 Android 系统为基础的智能手机、平板电脑以及炫酷的智能穿戴设备在市场上大行其道。从业人员如何快速学习和掌握 Android App(应用)的开发呢?能否推荐一本最新的 Android App开发的教材,可以让使用这本教材的人在学习过程中直接实践最新版本的 Android Studio开发环境呢?
对于上述需求,建议阅读这本新书。
这是一本引领 Android App 开发的入门教材,当然也适合转向 Android App开发的专业人员用于熟悉 Android Studio开发环境。本书撰写的宗旨是:读者不必是 Java 大师,也不必是面向对象程序设计的高手,只要通过本书简单易懂的讲解和图示、标准范例程序的调试和演练、循环往复的动手练习和实践,就能达到快速入门的目的,奠定 Android App 开发的坚实基础。
本书既适合作为大专院校和社会培训学校的教材,又适合有基础编程经验的读者自学。本书中涵盖了 Android App 开发中的必备主题,如用户界面和版面布局、 Activity(活动)、事件处理、 Intent、内容提供者、照相、影音播放、 GPS定位和地图、传感器、网页浏览(WebView)、对话框、菜单、SQLite 数据库、Java 面向对象程序设计与 XML等。
本书每一章都提供了范例程序,功能不同的范例程序有 40 多个,若加上同类范例而功能有差异的不同版本,则范例程序的总数高达 70 多个。这些范例适用于 Android 2.2到 Android 7.x,它们都在 Android Studio 2.2.2 的集成开发环境下调试通过,除了可以在 AVD(安卓虚拟设备)仿真运行外,还可以直接运行在 Android智能手机和平板电脑上。
最后祝大家学习顺利,早日编写出热门 Android App!
资深架构师赵军
2017 年 3 月