书名:Android 6 应用开发案例精解(第3版)
作者:保罗.戴特尔
出版日期:2018
ISBN:
Android 6 应用开发案例精解(第3版)
由美国知名编程教材的作者保罗·戴特尔、哈维 ·戴特尔和亚历山大·沃尔德所合著、张君施等翻译 的《Android6应用开发案例精解(第3版)》一书是美 国知名编程类系列教材中针对Android 6系统下进行 应用开发而编写的一本入门级教程,全书以“应用驱 动的方法”为基础,详细讲解了8个完整的Android应 用的开发过程,对编程一无所知的读者不必了解Java 、xML就可以进行Android编程。全书利用*新的 Android SDK和Android StudioIDE,通过精选的8个 生动的实例,全面阐述了Android应用编程的完整过 程。每一个实例都有不同的侧重点,便于读者熟悉 Android编程的各个要点。 本书可作为大专院校计算机编程课程的教材,也 适合希望从事Andr。oid应用开发的初学者,或者作 为该领域中**开发者的参考书。

目录

第1章 Android简介

1.1 简介

1.2 Android——***的移动操作系统

1.3 Android的特点

1.4 Android操作系统

1.4.1 Android 2.2(Froyo)

1.4.2 Android 2.3(Gingerbread)

1.4.3 Android 3.0~3.2(Honeycomb)

1.4.4 Android 4.0~4.0.4(Ice Cream Sandwich)

1.4.5 Android 4.1~4.3(Jelly Bean)

1.4.6 Android 4.4(KitKat)

1.4.7 Android 5.0和5.1(Lollipop)

1.4.8 Android 6(Marshmallow)

1.5 从Google Play下载应用

1.6 包

1.7 Android软件开发工具集(SDK)

1.8 面向对象编程:简短回顾

1.8.1 汽车作为对象

1.8.2 方法与类

1.8.3 实例化

1.8.4 复用

1.8.5 消息与方法调用

1.8.6 属性与实例变量

1.8.7 封装

1.8.8 继承

1.8.9 面向对象的分析与设计(OOAD)

1.9 在AVD中测试Tip Calculator应用

1.9.1 在Android Studio中打开Tip Calculator应用的工程

1.9.2 创建Android虚拟设备(AVD)

1.9.3 在Nexus 6 AVD中运行Tip Calculator应用

1.9.4 在Android设备上运行Tip Calculator应用

1.10 创建好的Android应用

1.11 Android开发资源

1.12 小结

第2章 Welcome应用

2.1 简介

2.2 技术概览

2.2.1 Android Studio

2.2.2 LinearLayout,TextView和ImageView

2.2.3 可扩展标记语言(XML)

2.2.4 应用的资源

2.2.5 辅助性

2.2.6 国际化

2.3 创建应用

2.3.1 启动Android Studio

2.3.2 创建新工程

2.3.3 Create New Project对话框

2.3.4 Target Android Devices步骤

2.3.5 Add an Activity to Mobile步骤

2.3.6 Customize the Activity步骤

2.4 Android Studio窗口

2.4.1 Project窗口

2.4.2 编辑器窗口

2.4.3 Component Tree窗口

2.4.4 应用的资源文件

2.4.5 布局编辑器

2.4.6 默认GUI

2.4.7 默认GUI的XML

2.5 用布局编辑器构建应用的GUI

2.5.1 向工程添加图像

2.5.2 添加应用图标

2.5.3 将RelativeLayout改成LinearLayout

2.5.4 改变LinearLayout的id和orientation属性

2.5.5 配置TextView的id和text属性

2.5.6 配置TextView的textSize属性

2.5.7 设置TextView的textColor属性

2.5.8 设置TextView的gravity属性

2.5.9 设置TextView的layout:gravity属性

2.5.10 设置TextView的layout:weight属性

2.5.11 添加ImageView,显示图像

2.5.12 预览设计的效果

2.6 运行Welcome应用

2.7 为应用增加辅助功能

2.8 使应用国际化

2.8.1 本地化

2.8.2 为本地化资源命名文件夹

2.8.3 将字符串译文添加到工程中

2.8.4 本地化字符串

2.8.5 在AVD中测试西班牙语的应用

2.8.6 在设备中测试西班牙语的应用

2.8.7 TalkBack与本地化

2.8.8 本地化清单

2.8.9 专业翻译

2.9 小结

第3章 Tip Calculator应用

3.1 简介

3.2 测试驱动的Tip Calculator应用

3.3 技术概览

3.3.1 Activity类

3.3.2 Activity类的生命周期方法

3.3.3 AppCompat库与AppCompatActivity类

3.3.4 安排GridLayout中的视图

3.3.5 利用布局编辑器、Component Tree和Properties窗口创建并定制GUI

3.3.6 格式化数字,表示本地货币和百分比字符串

3.3.7 实现TextWatcher接口,处理EditText中的文本变化

3.3.8 实现OnSeekBarChangeListener接口,处理SeekBar中的滑块位置变化

3.3.9 材料主题

3.3.10 材料设计:高度和阴影

3.3.11 材料设计:颜色

3.3.12 AndroidManifest.xml

3.3.13 在Properties窗口中搜索

3.4 构建GUI

3.4.1 GridLayout简介

3.4.2 创建TipCalculator工程

3.4.3 改成GridLayout布局

3.4.4 添加TextView,EditText和SeekBar

3.4.5 定制视图

3.5 默认主题及定制主题颜色

3.5.1 parent主题

3.5.2 定制主题颜色

3.5.3 样式的常用View属性值

3.6 添加应用的逻辑功能

3.6.1 package声明和import声明

3.6.2 AppCompatActivity的MainActivity子类

3.6.3 类变量与实例变量

3.6.4 重写Activity方法onCreate

3.6.5 MainActivity方法calculate

3.6.6 实现OnSeekBarChangeListener接口的匿名内部类

3.6.7 实现TextWatcher接口的匿名内部类

3.7 AndroidManifest.xml

3.7.1 manifest元素

3.7.2 application元素

3.7.3 activity元素

3.7.4 intent-filter元素

3.8 小结

第4章 Flag Quiz应用

4.1 简介

4.2 测试驱动的Flag Quiz应用

4.2.1 配置应用的设置

4.2.2 运行应用

4.3 技术概览

4.3.1 菜单

4.3.2 Fragment

4.3.3 Fragment生命周期方法

4.3.4 管理Fragment

4.3.5 **项

4.3.6 assets文件夹

4.3.7 资源文件夹

4.3.8 支持不同屏幕尺寸和分辨率

4.3.9 确定设备方向

4.3.10 用于显示消息的Toast

4.3.11 使用Handler在未来执行一个Runnable对象

4.3.12 将动画用于View

4.3.13 使用ViewAnimationUtils创建环形缩放动画

4.3.14 通过颜色状态表根据视图状态确定颜色

4.3.15 AlertDialog

4.3.16 为异常消息做日志

4.3.17 通过显示Intent启动另一个活动

4.3.18 Java数据结构

4.3.19 Java SE 7特性

4.3.20 AndroidManifest.xml

4.4 创建工程、资源文件和另外的类

4.4.1 创建工程

4.4.2 Blank Activity模板布局

4.4.3 配置对Java SE 7的支持

4.4.4 向工程添加国旗图像

4.4.5 strings.xml与格式化字符串资源

4.4.6 arrays.xml

4.4.7 colors.xml

4.4.8 button_text_color.xml

4.4.9 编辑menu_main.xml

4.4.10 创建国旗飘扬动画

4.4.11 指定应用设置的preferences.xml

4.4.12 添加SettingsActivity类和SettingsActivityFragment类

4.5 构建应用的GUI

4.5.1 用于纵向模式设备的activity_main.xml布局

4.5.2 设计fragment_main.xml布局

4.5.3 Graphical Layout编辑器工具栏

4.5.4 用于横向设备的content_main.xml布局

4.6 MainActivity类

4.6.1 package声明和import声明

4.6.2 字段

4.6.3 重写的Activity方法onCreate

4.6.4 重写的Activity方法onStart

4.6.5 重写的Activity方法onCreateOptionsMenu

4.6.6 重写的Activity方法onOptionsItemSelected

4.6.7 实现OnSharedPreferenceChangeListener的匿名内部类

4.7 MainActivityFragment类

4.7.1 package声明和import声明

4.7.2 字段

4.7.3 重写的Fragment方法onCreateView

4.7.4 updateGuessRows方法

4.7.5 updateRegions方法

4.7.6 resetQuiz方法

4.7.7 loadNextFlag方法

4.7.8 getCountryName方法

4.7.9 animate方法

4.7.10 实现OnClickListener的匿名内部类

4.7.11 disableButtons方法

4.8 SettingsActivity类

4.9 SettingsActivityFragment类

4.10 AndroidManifest.xml

4.11 小结

第5章 Doodlz应用

5.1 简介

5.2 在AVD中测试Doodlz应用

5.3 技术概览

5.3.1 Activity和Fragment的生命周期方法

5.3.2 定制视图

5.3.3 使用SensorManager监听加速计事件

5.3.4 定制的DialogFragment

5.3.5 使用Canvas,Paint和Bitmap画图

5.3.6 处理多点触事件并在Path中保存线信息

5.3.7 保存图形

5.3.8 打印功能及Android支持库的PrintHelper类

5.3.9 Android 6.0的新许可模型

5.3.10 利用Gradle构建系统添加依赖性

5.4 创建工程和资源

5.4.1 创建工程

5.4.2 Gradle:向工程添加支持库

5.4.3 strings.xml

5.4.4 为菜单项导入材料设计图标

5.4.5 MainActivityFragment菜单

5.4.6 在AndroidManifest.xml中添加许可

5.5 构建应用的GUI

5.5.1 MainActivity的content_main.xml布局

5.5.2 MainActivityFragment的fragment_main.xml布局

5.5.3 ColorDialogFragment的fragment_color.xml布局

5.5.4 LineWidthDialogFragment的fragment_line_width.xml布局

5.5.5 添加EraseImageDialogFragment类

5.6 MainActivity类

5.7 MainActivityFragment类

5.7.1 package声明、import声明与字段

5.7.2 重写的Fragment方法onCreateView

5.7.3 onResume方法和enableAccelerometerListening方法

5.7.4 onPause方法和disableAccelerometerListening方法

5.7.5 用于处理加速计事件的匿名内部类

5.7.6 confirmErase方法

5.7.7 重写的Fragment方法onCreateOptionsMenu和onOptionsItemSelected

5.7.8 saveImage方法

5.7.9 重写的onRequestPermissionsResult方法

5.7.10 getDoodleView方法和setDialogOnScreen方法

5.8 DoodleView类

5.8.1 package声明和import声明

5.8.2 静态变量和实例变量

5.8.3 构造方法

5.8.4 重写的View方法onSizeChanged

5.8.5 clear,setDrawingColor,getDrawingColor,setLineWidth和getLineWidth方法

5.8.6 重写的View方法onDraw

5.8.7 重写的View方法onTouchEvent

5.8.8 touchStarted方法

5.8.9 touchMoved方法

5.8.10 touchEnded方法

5.8.11 saveImage方法

5.8.12 printImage方法

5.9 ColorDialogFragment类

5.9.1 重写的DialogFragment方法onCreateDialog

5.9.2 getDoodleFragment方法

5.9.3 重写的Fragment生命周期方法onAttach和onDetach

5.9.4 响应alpha,red,green和blue SeekBar事件的匿名内部类

5.10 LineWidthDialogFragment类

5.10.1 onCreateDialog方法

5.10.2 响应widthSeekBar事件的匿名内部类

5.11 EraseImageDialogFragment类

5.12 小结

第6章 Cannon Game应用

6.1 简介

6.2 测试驱动的Cannon Game应用

6.3 技术概览

6.3.1 使用res/raw资源文件夹

6.3.2 Activity和Fragment的生命周期方法

6.3.3 重写View方法onTouchEvent

6.3.4 用SoundPool和AudioManager添加声音

6.3.5 用Thread,SurfaceView和SurfaceHolder实现逐帧动画

6.3.6 简单的冲突检测

6.3.7 沉浸模式

6.4 构建应用的GUI和资源文件

6.4.1 创建工程

6.4.2 调整主题,删除应用标题和应用栏

6.4.3 strings.xml

6.4.4 颜色

6.4.5 为应用添加声音

6.4.6 添加MainActivityFragment类

6.4.7 编辑activity_main.xml

6.4.8 将CannonView添加到fragment_main.xml

6.5 应用中各个类的概述

6.6 Activity的MainActivity子类

6.7 Fragment的MainActivityFragment子类

6.8 GameElement类

6.8.1 实例变量与构造方法

6.8.2 update,draw和playSound方法

6.9 GameElement的Blocker子类

6.10 GameElement的Target子类

6.11 Cannon类

6.11.1 实例变量与构造方法

6.11.2 align方法

6.11.3 fireCannonball方法

6.11.4 draw方法

6.11.5 getCannonball和removeCannonball方法

6.12 GameElement的Cannonball子类

6.12.1 实例变量与构造方法

6.12.2 getRadius,collidesWith,isOnScreen和reverseVelocityX方法

6.12.3 update方法

6.12.4 draw方法

6.13 SurfaceView的CannonView子类

6.13.1 package声明和import声明

6.13.2 常量与实例变量

6.13.3 构造方法

6.13.4 重写View方法onSizeChanged

6.13.5 getScreenWidth,getScreenHeight和playSound方法

6.13.6 newGame方法

6.13.7 updatePositions方法

6.13.8 alignAndFireCannonball方法

6.13.9 showGameOverDialog方法

6.13.10 drawGameElements方法

6.13.11 testForCollisions方法

6.13.12 stopGame和releaseResources方法

6.13.13 实现SurfaceHolder.Callback方法

6.13.14 重写View方法onTouchEvent

6.13.15 CannonThread:使用Thread实现游戏的循环

6.13.16 hideSystemBars和showSystemBars方法

6.14 小结

第7章 WeatherViewer应用

7.1 简介

7.2 测试驱动的WeatherViewer应用

7.3 技术概览

7.3.1 Web服务

7.3.2 JSON与org.json包

7.3.3 调用REST Web服务的HttpUrlConnection

7.3.4 使用AsyncTask执行GUI线程以外的网络请求

7.3.5 ListView,ArrayAdapter与View-Holder模式

7.3.6 FloatingActionButton

7.3.7 TextInputLayout

7.3.8 Snackbar

7.4 构建应用的GUI和资源文件

7.4.1 创建工程

7.4.2 AndroidManifest.xml

7.4.3 strings.xml

7.4.4 colors.xml

7.4.5 activity_main.xml

7.4.6 content_main.xml

7.4.7 list_item.xml

7.5 Weather类

7.5.1 package声明、import声明与实例变量

7.5.2 构造方法

7.5.3 convertTimeStampToDay方法

7.6 WeatherArrayAdapter类

7.6.1 package声明和import声明

7.6.2 嵌套类ViewHolder

7.6.3 实例变量与构造方法

7.6.4 重写的ArrayAdapter方法getView

7.6.5 用于在独立线程中下载图像的AsyncTask子类

7.7 MainActivity类

7.7.1 package声明和import声明

7.7.2 实例变量

7.7.3 重写的Activity方法onCreate

7.7.4 dismissKeyboard方法和createURL方法

7.7.5 调用Web服务的AsyncTask子类

7.7.6 convertJSONtoArrayList方法

7.8 小结

第8章 Twitter Searches应用

8.1 简介

8.2 测试驱动的应用

8.2.1 添加一个搜索

8.2.2 查看搜索Twitter的结果

8.2.3 编辑搜索

8.2.4 共享搜索

8.2.5 删除搜索

8.2.6 滚动浏览保存的搜索

8.3 技术概览

8.3.1 将键/值对数据保存到SharedPreferences文件

8.3.2 隐式Intent和意图选择器

8.3.3 RecyclerView

8.3.4 RecyclerView.Adapter和RecyclerView.ViewHolder

8.3.5 RecyclerView.ItemDecoration

8.3.6 在AlertDialog中显示选项清单

8.4 构建应用的GUI和资源文件

8.4.1 创建工程

8.4.2 AndroidManifest.xml

8.4.3 添加RecyclerView库

8.4.4 colors.xml

8.4.5 strings.xml

8.4.6 arrays.xml

8.4.7 dimens.xml

8.4.8 添加Save按钮图标

8.4.9 activity_main.xml

8.4.10 content_main.xml

8.4.11 RecyclerView项的布局:list_item.xml

8.5 MainActivity类

8.5.1 package声明和import声明

8.5.2 MainActivity类

8.5.3 重写的Activity方法onCreate

8.5.4 TextWatcher事件处理器和updateSaveFAB方法

8.5.5 saveButton的OnClickListener接口

8.5.6 addTaggedSearch方法

8.5.7 实现View.OnClickListener,显示搜索结果的匿名内部类

8.5.8 实现View.OnLongClickListener的匿名内部类

8.5.9 shareSearch方法

8.5.10 deleteSearch方法

8.6 RecyclerView.Adapter的SearchesAdapter子类

8.6.1 package声明、import声明、实例变量和构造方法

8.6.2 RecyclerView.ViewHolder的嵌套ViewHolder子类

8.6.3 重写RecyclerView.Adapter方法

8.7 RecyclerView.ItemDecoration的ItemDivider子类

8.8 Fabric:Twitter的新移动开发平台

8.9 小结

第9章 Address Book应用

9.1 简介

9.2 测试驱动的Address Book应用

9.2.1 添加联系人信息

9.2.2 查看联系人信息

9.2.3 编辑联系人信息

9.2.4 删除联系人信息

9.3 技术概览

9.3.1 用FragmentTransaction显示Fragment

9.3.2 在Fragment与宿主Activity之间交换数据

9.3.3 操作SQLite数据库

9.3.4 ContentProvider和ContentResolver

9.3.5 Loader和LoaderManager——异步数据库访问

9.3.6 定义样式并应用于GUI组件

9.3.7 指定TextView背景

9.4 构建应用的GUI和资源文件

9.4.1 创建工程

9.4.2 创建应用的类

9.4.3 添加应用图标

9.4.4 strings.xml

9.4.5 styles.xml

9.4.6 textview_border.xml

9.4.7 MainActivity的布局

9.4.8 ContactsFragment的布局

9.4.9 DetailFragment的布局

9.4.10 AddEditFragment的布局

9.4.11 DetailFragment的菜单

9.5 应用中各个类的概述

9.6 DatabaseDescription类

9.6.1 静态字段

9.6.2 嵌套Contact类

9.7 AddressBookDatabaseHelper类

9.8 AddressBookContentProvider类

9.8.1 AddressBookContentProvider字段

9.8.2 重写的onCreate和getType方法

9.8.3 重写的query方法

9.8.4 重写的insert方法

9.8.5 重写的update方法

9.8.6 重写的delete方法

9.9 MainActivity类

9.9.1 超类及实现的接口和字段

9.9.2 重写的onCreate方法

9.9.3 ContactsFragment.ContactsFragmentListener方法

9.9.4 displayContact方法

9.9.5 displayAddEditFragment方法

9.9.6 DetailFragment.DetailFragmentListener方法

9.9.7 AddEditFragment.AddEditFragmentListener方法

9.10 ContactsFragment类

9.10.1 超类及实现的接口

9.10.2 ContactsFragmentListener

9.10.3 字段

9.10.4 重写的Fragment方法onCreateView

9.10.5 重写的Fragment方法onAttach和onDetach

9.10.6 重写的Fragment方法onActivityCreated

9.10.7 updateContactList方法

9.10.8 LoaderManager.LoaderCallbacks<Cursor>方法

9.11 ContactsAdapter类

9.12 AddEditFragment类

9.12.1 超类及实现的接口

9.12.2 AddEditFragmentListener

9.12.3 字段

9.12.4 重写的Fragment方法onAttach,onDetach和onCreateView

9.12.5 TextWatcher nameChangedListener和updateSaveButtonFAB方法

9.12.6 View.OnClickListener saveContactButtonClicked和saveContact方法

9.12.7 LoaderManager.LoaderCallbacks<Cursor>方法

9.13 DetailFragment类

9.13.1 超类及实现的接口

9.13.2 DetailFragmentListener

9.13.3 字段

9.13.4 重写的onAttach,onDetach和onCreateView方法

9.13.5 重写的onCreateOptionsMenu和onOptionsItemSelected方法

9.13.6 deleteContact方法和DialogFragment confirmDelete

9.13.7 LoaderManager.LoaderCallback<Cursor>方法

9.14 小结

第10章 Google Play及应用的商业问题

10.1 简介

10.2 为发布应用做准备

10.2.1 测试应用

10.2.2 *终用户协议

10.2.3 图标与卷标

10.2.4 为应用定义版本

10.2.5 为已付费应用提供访问控制授权

10.2.6 弄乱源代码

10.2.7 获取密钥,对应用进行数字签名

10.2.8 有特色的图像和屏幕截图

10.2.9 用于推广应用的视频

10.3 为应用定价:免费或收费

10.3.1 付费应用

10.3.2 免费应用

10.4 利用In-App Advertising货币化应用

10.5 货币化应用:通过应用内计费功能销售虚拟商品

10.6 注册Google Play

10.7 设置Google Payments商家账号

10.8 将应用上载到Google Play

10.9 在应用里启动Play Store

10.10 管理Google Play中的应用

10.11 其他的Android应用市场

10.12 其他移动应用平台及应用移植

10.13 应用的市场推广

10.14 小结

索引


阅读全文