Android 6 应用开发案例精解(第三版) [Android 6 for Programmers: An App-Driven Approach,]

Android 6 应用开发案例精解(第三版) [Android 6 for Programmers: An App-Driven Approach,] pdf epub mobi txt 电子书 下载 2025

[美] Paul,Deitel(保罗. 戴特尔),Harvey,Deitel(哈维. 戴特尔),Alexander ... 著,张君施 等 译
图书标签:
  • Android
  • Android 6
  • 应用开发
  • 移动开发
  • 编程
  • Java
  • 案例分析
  • 实战
  • Android Studio
  • 第三方库
  • 用户界面
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121314292
版次:3
商品编码:12084243
包装:平装
外文名称:Android 6 for Programmers: An App-Driven Approach,
开本:16开
出版时间:2017-05-01
用纸:胶版纸
页数:372
字数:595000
正文语种:中文

具体描述

编辑推荐

适读人群 :本书适合希望从事 Android 应用开发的初学者, 也适合作为该领域中高级开发者的参考书。

*书中采用了以应用为中心的方法,包含8个完整编码的Android应用。

*专业的程序员开发者指南,讲解如何利用Android 6和Android Studio开发用于智能手机和平板电脑的应用。

*实用、例子丰富的Android教程。


内容简介

本书是美国知名编程教材的作者针对Android系统下进行应用开发而编写的一本入门级教程,全书以"应用驱动的方法”为基础,详细讲解了17个完整的Android应用的开发过程,并提供了8个APP应用的完整的源代码。这些应用经过精心挑选,从不同侧面展现了Android系统各个功能模块的编程方法。这些功能包括音频、视频、动画、电话、蓝牙、语音识别、加速度计、GPS、指北针、应用窗件、3D图形等, 它们都是从事Android应用开发所必须熟知的基本技术。

作者简介

Paul Deitel和Harvey Deitel是全球畅销的编程语言教材和专业图书作家,他们成立的Deitel & Associates公司是一家国际知名的企业培训和写作公司,专门进行计算机编程语言、对象技术、移动应用开发及Internet和Web软件技术方面的培训和写作,出版了一流的编程专业的大学教材、 专业图书以及LiveLessons视频课程。
张君施,北京工商大学数理系副教授,党支部书记。研究方向为概率论与数理统计、计算机语言,翻译过多部经典编程教材。


目录

第1章 Android简介 1
1.1 简介 2
1.2 Android――世界领先的移动操作系统 2
1.3 Android的特点 3
1.4 Android操作系统 5
1.4.1 Android 2.2 (Froyo) 5
1.4.2 Android 2.3 (Gingerbread) 6
1.4.3 Android 3.0~3.2 (Honeycomb) 6
1.4.4 Android 4.0~4.0.4 (Ice Cream Sandwich) 6
1.4.5 Android 4.1~4.3 (Jelly Bean) 7
1.4.6 Android 4.4 (KitKat) 8
1.4.7 Android 5.0和5.1 (Lollipop) 8
1.4.8 Android 6 (Marshmallow) 9
1.5 从Google Play下载应用 9
1.6 包 10
1.7 Android软件开发工具集(SDK) 11
1.8 面向对象编程:简短回顾 13
1.8.1 汽车作为对象 13
1.8.2 方法与类 13
1.8.3 实例化 14
1.8.4 复用 14
1.8.5 消息与方法调用 14
1.8.6 属性与实例变量 14
1.8.7 封装 14
1.8.8 继承 14
1.8.9 面向对象的分析与设计(OOAD) 14
1.9 在AVD中测试Tip Calculator应用 15
1.9.1 在Android Studio中打开Tip Calculator应用的工程 15
1.9.2 创建Android虚拟设备(AVD) 16
1.9.3 在Nexus 6 AVD中运行Tip Calculator应用 18
1.9.4 在Android设备上运行Tip Calculator应用 20
1.10 创建好的Android应用 21
1.11 Android开发资源 22
1.12 小结 23
第2章 Welcome应用 24
2.1 简介 25
2.2 技术概览 26
2.2.1 Android Studio 26
2.2.2 LinearLayout,TextView和ImageView 26
2.2.3 可扩展标记语言(XML) 26
2.2.4 应用的资源 26
2.2.5 辅助性 26
2.2.6 国际化 27
2.3 创建应用 27
2.3.1 启动Android Studio 27
2.3.2 创建新工程 27
2.3.3 Create New Project对话框 28
2.3.4 Target Android Devices步骤 28
2.3.5 Add an Activity to Mobile步骤 29
2.3.6 Customize the Activity步骤 30
2.4 Android Studio窗口 31
2.4.1 Project窗口 31
2.4.2 编辑器窗口 32
2.4.3 Component Tree窗口 33
2.4.4 应用的资源文件 33
2.4.5 布局编辑器 33
2.4.6 默认GUI 33
2.4.7 默认GUI的XML 34
2.5 用布局编辑器构建应用的GUI 35
2.5.1 向工程添加图像 35
2.5.2 添加应用图标 36
2.5.3 将RelativeLayout 改成LinearLayout 37
2.5.4 改变LinearLayout的id和orientation属性 38
2.5.5 配置TextView的id和text属性 39
2.5.6 配置TextView的textSize属性 40
2.5.7 设置TextView的textColor属性 41
2.5.8 设置TextView的gravity属性 41
2.5.9 设置TextView的layout:gravity属性 41
2.5.10 设置TextView的layout:weight属性 43
2.5.11 添加ImageView,显示图像 43
2.5.12 预览设计的效果 46
2.6 运行Welcome应用 46
2.7 为应用增加辅助功能 48
2.8 使应用国际化 49
2.8.1 本地化 49
2.8.2 为本地化资源命名文件夹 49
2.8.3 将字符串译文添加到工程中 49
2.8.4 本地化字符串 50
2.8.5 在AVD中测试西班牙语的应用 50
2.8.6 在设备中测试西班牙语的应用 51
2.8.7 TalkBack与本地化 51
2.8.8 本地化清单 52
2.8.9 专业翻译 52
2.9 小结 52
第3章 Tip Calculator应用 53
3.1 简介 54
3.2 测试驱动的Tip Calculator应用 55
3.3 技术概览 56
3.3.1 Activity类 56
3.3.2 Activity类的生命周期方法 56
3.3.3 AppCompat库与AppCompatActivity类 57
3.3.4 安排GridLayout中的视图 57
3.3.5 利用布局编辑器、Component Tree和Properties窗口创建并定制GUI 58
3.3.6 格式化数字,表示本地货币和百分比字符串 58
3.3.7 实现TextWatcher接口,处理EditText中的文本变化 58
3.3.8 实现OnSeekBarChangeListener接口,处理SeekBar中的滑块位置变化 58
3.3.9 材料主题 58
3.3.10 材料设计:高度和阴影 59
3.3.11 材料设计:颜色 59
3.3.12 AndroidManifest.xml 60
3.3.13 在Properties窗口中搜索 60
3.4 构建GUI 60
3.4.1 GridLayout简介 60
3.4.2 创建TipCalculator工程 61
3.4.3 改成GridLayout布局 61
3.4.4 添加TextView,EditText和SeekBar 62
3.4.5 定制视图 64
3.5 默认主题及定制主题颜色 66
3.5.1 parent主题 66
3.5.2 定制主题颜色 67
3.5.3 样式的常用View属性值 70
3.6 添加应用的逻辑功能 70
3.6.1 package声明和import声明 70
3.6.2 AppCompatActivity的MainActivity子类 71
3.6.3 类变量与实例变量 71
3.6.4 重写Activity方法onCreate 72
3.6.5 MainActivity方法calculate 74
3.6.6 实现OnSeekBarChangeListener接口的匿名内部类 74
3.6.7 实现TextWatcher接口的匿名内部类 75
3.7 AndroidManifest.xml 76
3.7.1 manifest元素 77
3.7.2 application元素 77
3.7.3 activity元素 77
3.7.4 intent-filter元素 78
3.8 小结 79
第4章 Flag Quiz应用 80
4.1 简介 81
4.2 测试驱动的Flag Quiz应用 83
4.2.1 配置应用的设置 83
4.2.2 运行应用 84
4.3 技术概览 86
4.3.1 菜单 86
4.3.2 Fragment 86
4.3.3 Fragment生命周期方法 87
4.3.4 管理Fragment 88
4.3.5 首选项 88
4.3.6 assets文件夹 88
4.3.7 资源文件夹 89
4.3.8 支持不同屏幕尺寸和分辨率 89
4.3.9 确定设备方向 90
4.3.10 用于显示消息的Toast 90
4.3.11 使用Handler在未来执行一个Runnable对象 90
4.3.12 将动画用于View 90
4.3.13 使用ViewAnimationUtils创建环形缩放动画 90
4.3.14 通过颜色状态表根据视图状态确定颜色 90
4.3.15 AlertDialog 91
4.3.16 为异常消息做日志 91
4.3.17 通过显示Intent启动另一个活动 91
4.3.18 Java数据结构 92
4.3.19 Java SE 7特性 92
4.3.20 AndroidManifest.xml 93
4.4 创建工程、资源文件和另外的类 93
4.4.1 创建工程 93
4.4.2 Blank Activity模板布局 94
4.4.3 配置对Java SE 7的支持 94
4.4.4 向工程添加国旗图像 95
4.4.5 strings.xml与格式化字符串资源 95
4.4.6 arrays.xml 96
4.4.7 colors.xml 97
4.4.8 button_text_color.xml 98
4.4.9 编辑menu_main.xml 98
4.4.10 创建国旗飘扬动画 99
4.4.11 指定应用设置的preferences.xml 100
4.4.12 添加SettingsActivity类和SettingsActivityFragment类 101
4.5 构建应用的GUI 102
4.5.1 用于纵向模式设备的activity_main.xml布局 102
4.5.2 设计fragment_main.xml布局 102
4.5.3 Graphical Layout编辑器工具栏 106
4.5.4 用于横向设备的content_main.xml布局 107
4.6 MainActivity类 108
4.6.1 package声明和import声明 109
4.6.2 字段 109
4.6.3 重写的Activity方法onCreate 109
4.6.4 重写的Activity方法onStart 111
4.6.5 重写的Activity方法onCreateOptionsMenu 112
4.6.6 重写的Activity方法onOptionsItemSelected 112
4.6.7 实现OnSharedPreferenceChangeListener的匿名内部类 113
4.7 MainActivityFragment类 114
4.7.1 package声明和import声明 114
4.7.2 字段 114
4.7.3 重写的Fragment方法onCreateView 116
4.7.4 updateGuessRows方法 118
4.7.5 updateRegions方法 118
4.7.6 resetQuiz方法 119
4.7.7 loadNextFlag方法 120
4.7.8 getCountryName方法 122
4.7.9 animate方法 122
4.7.10 实现OnClickListener的匿名内部类 123
4.7.11 disableButtons方法 126
4.8 SettingsActivity类 126
4.9 SettingsActivityFragment类 127
4.10 AndroidManifest.xml 127
4.11 小结 129
第5章 Doodlz应用 130
5.1 简介 131
5.2 在AVD中测试Doodlz应用 132
5.3 技术概览 135
5.3.1 Activity和Fragment的生命周期方法 135
5.3.2 定制视图 136
5.3.3 使用SensorManager监听加速计事件 136
5.3.4 定制的DialogFragment 136
5.3.5 使用Canvas,Paint和Bitmap画图 137
5.3.6 处理多点触事件并在Path中保存线信息 137
5.3.7 保存图形 138
5.3.8 打印功能及Android支持库的PrintHelper类 138
5.3.9 Android 6.0的新许可模型 138
5.3.10 利用Gradle构建系统添加依赖性 138
5.4 创建工程和资源 138
5.4.1 创建工程 139
5.4.2 Gradle:向工程添加支持库 139
5.4.3 strings.xml 139
5.4.4 为菜单项导入材料设计图标 140
5.4.5 MainActivityFragment菜单 140
5.4.6 在AndroidManifest.xml中添加许可 142
5.5 构建应用的GUI 142
5.5.1 MainActivity的content_main.xml布局 142
5.5.2 MainActivityFragment的fragment_main.xml布局 143
5.5.3 ColorDialogFragment的fragment_color.xml布局 143
5.5.4 LineWidthDialogFragment的fragment_line_width.xml布局 145
5.5.5 添加EraseImageDialogFragment类 146
5.6 MainActivity类 146
5.7 MainActivityFragment类 147
5.7.1 package声明、import声明与字段 147
5.7.2 重写的Fragment方法onCreateView 148
5.7.3 onResume方法和enableAccelerometerListening方法 149
5.7.4 onPause方法和disableAccelerometerListening方法 150
5.7.5 用于处理加速计事件的匿名内部类 150
5.7.6 confirmErase方法 151
5.7.7 重写的Fragment方法onCreateOptionsMenu和onOptionsItemSelected 152
5.7.8 saveImage方法 153
5.7.9 重写的onRequestPermissionsResult方法 154
5.7.10 getDoodleView方法和setDialogOnScreen方法 155
5.8 DoodleView类 155
5.8.1 package声明和import声明 155
5.8.2 静态变量和实例变量 156
5.8.3 构造方法 156
5.8.4 重写的View方法onSizeChanged 156
5.8.5 clear, setDrawingColor,getDrawingColor,setLineWidth和getLineWidth方法 157
5.8.6 重写的View方法onDraw 158
5.8.7 重写的View方法onTouchEvent 158
5.8.8 touchStarted方法 159
5.8.9 touchMoved方法 160
5.8.10 touchEnded方法 161
5.8.11 saveImage方法 161
5.8.12 printImage方法 162
5.9 ColorDialogFragment类 163
5.9.1 重写的DialogFragment方法onCreateDialog 163
5.9.2 getDoodleFragment方法 165
5.9.3 重写的Fragment生命周期方法onAttach和onDetach 165
5.9.4 响应alpha, red, green和blue SeekBar事件的匿名内部类 165
5.10 LineWidthDialogFragment类 166
5.10.1 onCreateDialog方法 168
5.10.2 响应widthSeekBar事件的匿名内部类 168
5.11 EraseImageDialogFragment类 169
5.12 小结 170
第6章 Cannon Game应用 171
6.1 简介 172
6.2 测试驱动的Cannon Game应用 173
6.3 技术概览 173
6.3.1 使用res/raw资源文件夹 173
6.3.2 Activity和Fragment的生命周期方法 173
6.3.3 重写View方法onTouchEvent 174
6.3.4 用SoundPool和AudioManager添加声音 174
6.3.5 用Thread,SurfaceView和SurfaceHolder实现逐帧动画 174
6.3.6 简单的冲突检测 175
6.3.7 沉浸模式 175
6.4 构建应用的GUI和资源文件 175
6.4.1 创建工程 175
6.4.2 调整主题,删除应用标题和应用栏 175
6.4.3 strings.xml 176
6.4.4 颜色 176
6.4.5 为应用添加声音 176
6.4.6 添加MainActivityFragment类 176
6.4.7 编辑activity_main.xml 177
6.4.8 将CannonView添加到fragment_main.xml 177
6.5 应用中各个类的概述 178
6.6 Activity的MainActivity子类 178
6.7 Fragment的MainActivityFragment子类 179
6.8 GameElement类 180
6.8.1 实例变量与构造方法 181
6.8.2 update, draw和playSound方法 181
6.9 GameElement的Blocker子类 181
6.10 GameElement的Target子类 182
6.11 Cannon类 183
6.11.1 实例变量与构造方法 183
6.11.2 align方法 183
6.11.3 fireCannonball方法 184
6.11.4 draw方法 184
6.11.5 getCannonball和removeCannonball方法 185
6.12 GameElement的Cannonball子类 185
6.12.1 实例变量与构造方法 185
6.12.2 getRadius,collidesWith,isOnScreen和reverseVelocityX方法 186
6.12.3 update方法 187
6.12.4 draw方法 187
6.13 SurfaceView的CannonView子类 187
6.13.1 package声明和import声明 187
6.13.2 常量与实例变量 188
6.13.3 构造方法 189
6.13.4 重写View方法onSizeChanged 191
6.13.5 getScreenWidth,getScreenHeight和playSound方法 191
6.13.6 newGame方法 192
6.13.7 updatePositions方法 194
6.13.8 alignAndFireCannonball方法 195
6.13.9 showGameOverDialog方法 195
6.13.10 drawGameElements方法 196
6.13.11 testForCollisions方法 197
6.13.12 stopGame和releaseResources方法 197
6.13.13 实现SurfaceHolder.Callback方法 199
6.13.14 重写View方法onTouchEvent 199
6.13.15 CannonThread:使用Thread实现游戏的循环 200
6.13.16 hideSystemBars和showSystemBars方法 201
6.14 小结 202
第7章 WeatherViewer应用 203
7.1 简介 204
7.2 测试驱动的WeatherViewer应用 204
7.3 技术概览 205
7.3.1 Web服务 205
7.3.2 JSON与org.json包 206
7.3.3 调用REST Web服务的HttpUrlConnection 208
7.3.4 使用AsyncTask执行GUI线程以外的网络请求 208
7.3.5 ListView,ArrayAdapter与View-Holder模式 209
7.3.6 FloatingActionButton 210
7.3.7 TextInputLayout 210
7.3.8 Snackbar 210
7.4 构建应用的GUI和资源文件 210
7.4.1 创建工程 210
7.4.2 AndroidManifest.xml 211
7.4.3 strings.xml 211
7.4.4 colors.xml 211
7.4.5 activity_main.xml 212
7.4.6 content_main.xml 212
7.4.7 list_item.xml 213
7.5 Weather类 214
7.5.1 package声明、import声明与实例变量 214
7.5.2 构造方法 215
7.5.3 convertTimeStampToDay方法 216
7.6 WeatherArrayAdapter类 216
7.6.1 package声明和import声明 216
7.6.2 嵌套类ViewHolder 217
7.6.3 实例变量与构造方法 217
7.6.4 重写的ArrayAdapter方法getView 218
7.6.5 用于在独立线程中下载图像的AsyncTask子类 219
7.7 MainActivity类 221
7.7.1 package声明和import声明 221
7.7.2 实例变量 222
7.7.3 重写的Activity方法onCreate 222
7.7.4 dismissKeyboard方法和createURL方法 223
7.7.5 调用Web服务的AsyncTask子类 224
7.7.6 convertJSONtoArrayList方法 226
7.8 小结 227
第8章 Twitter Searches应用 228
8.1 简介 229
8.2 测试驱动的应用 230
8.2.1 添加一个搜索 230
8.2.2 查看搜索Twitter的结果 231
8.2.3 编辑搜索 232
8.2.4 共享搜索 233
8.2.5 删除搜索 234
8.2.6 滚动浏览保存的搜索 234
8.3 技术概览 234
8.3.1 将键/值对数据保存到SharedPreferences文件 234
8.3.2 隐式Intent和意图选择器 235
8.3.3 RecyclerView 235
8.3.4 RecyclerView.Adapter和RecyclerView.ViewHolder 236
8.3.5 RecyclerView.ItemDecoration 236
8.3.6 在AlertDialog中显示选项清单 236
8.4 构建应用的GUI和资源文件 236
8.4.1 创建工程 236
8.4.2 AndroidManifest.xml 237
8.4.3 添加RecyclerView库 237
8.4.4 colors.xml 237
8.4.5 strings.xml 237
8.4.6 arrays.xml 237
8.4.7 dimens.xml 238
8.4.8 添加Save按钮图标 238
8.4.9 activity_main.xml 238
8.4.10 content_main.xml 239
8.4.11 RecyclerView项的布局:list_item.xml 241
8.5 MainActivity类 242
8.5.1 package声明和import声明 242
8.5.2 MainActivity类 242
8.5.3 重写的Activity方法onCreate 243
8.5.4 TextWatcher事件处理器和updateSaveFAB方法 245
8.5.5 saveButton的OnClickListener接口 246
8.5.6 addTaggedSearch方法 247
8.5.7 实现View.OnClickListener,显示搜索结果的匿名内部类 247
8.5.8 实现View.OnLongClickListener的匿名内部类 248
8.5.9 shareSearch方法 250
8.5.10 deleteSearch方法 251
8.6 RecyclerView.Adapter的SearchesAdapter子类 252
8.6.1 package声明、import声明、实例变量和构造方法 252
8.6.2 RecyclerView.ViewHolder的嵌套ViewHolder子类 252
8.6.3 重写RecyclerView.Adapter方法 253
8.7 RecyclerView.ItemDecoration的ItemDivider 子类 254
8.8 Fabric:Twitter的新移动开发平台 255
8.9 小结 256
第9章 Address Book应用 257
9.1 简介 258
9.2 测试驱动的Address Book应用 260
9.2.1 添加联系人信息 260
9.2.2 查看联系人信息 260
9.2.3 编辑联系人信息 260
9.2.4 删除联系人信息 262
9.3 技术概览 262
9.3.1 用FragmentTransaction显示Fragment 262
9.3.2 在Fragment与宿主Activity之间交换数据 263
9.3.3 操作SQLite数据库 263
9.3.4 ContentProvider和ContentResolver 263
9.3.5 Loader和LoaderManager――异步数据库访问 264
9.3.6 定义样式并应用于GUI组件 264
9.3.7 指定TextView背景 265
9.4 构建应用的GUI和资源文件 265
9.4.1 创建工程 265
9.4.2 创建应用的类 265
9.4.3 添加应用图标 266
9.4.4 strings.xml 266
9.4.5 styles.xml 266
9.4.6 textview_border.xml 267
9.4.7 MainActivity的布局 268
9.4.8 ContactsFragment的布局 270
9.4.9 DetailFragment的布局 270
9.4.10 AddEditFragment的布局 271
9.4.11 DetailFragment的菜单 273
9.5 应用中各个类的概述 273
9.6 DatabaseDescription类 274
9.6.1 静态字段 274
9.6.2 嵌套Contact类 275
9.7 AddressBookDatabaseHelper类 275
9.8 AddressBookContentProvider类 277
9.8.1 AddressBookContentProvider字段 277
9.8.2 重写的onCreate和getType方法 278
9.8.3 重写的query方法 279
9.8.4 重写的insert方法 281
9.8.5 重写的update方法 282
9.8.6 重写的delete方法 283
9.9 MainActivity类 284
9.9.1 超类及实现的接口和字段 284
9.9.2 重写的onCreate方法 285
9.9.3 ContactsFragment.ContactsFragmentListener方法 285
9.9.4 displayContact方法 286
9.9.5 displayAddEditFragment方法 287
9.9.6 DetailFragment.DetailFragmentListener方法 288
9.9.7 AddEditFragment.AddEditFragmentListener方法 288
9.10 ContactsFragment类 289
9.10.1 超类及实现的接口 289
9.10.2 ContactsFragmentListener 289
9.10.3 字段 290
9.10.4 重写的Fragment方法onCreateView 290
9.10.5 重写的Fragment方法onAttach和onDetach 291
9.10.6 重写的Fragment方法onActivityCreated 291
9.10.7 updateContactList方法 292
9.10.8 LoaderManager.LoaderCallbacks<Cursor>方法 292
9.11 ContactsAdapter类 293
9.12 AddEditFragment类 296
9.12.1 超类及实现的接口 296
9.12.2 AddEditFragmentListener 297
9.12.3 字段 297
9.12.4 重写的Fragment方法onAttach,onDetach和onCreateView 298
9.12.5 TextWatcher nameChangedListener和updateSaveButtonFAB方法 299
9.12.6 View.OnClickListener saveContactButtonClicked和saveContact方法 300
9.12.7 LoaderManager.LoaderCallbacks<Cursor>方法 301
9.13 DetailFragment类 302
9.13.1 超类及实现的接口 303
9.13.2 DetailFragmentListener 303
9.13.3 字段 303
9.13.4 重写的onAttach,onDetach和onCreateView方法 304
9.13.5 重写的onCreateOptionsMenu和onOptionsItemSelected方法 305
9.13.6 deleteContact方法和DialogFragment confirmDelete 306
9.13.7 LoaderManager.LoaderCallback<Cursor>方法 306
9.14 小结 308
第10章 Google Play及应用的商业问题 309
10.1 简介 309
10.2 为发布应用做准备 310
10.2.1 测试应用 310
10.2.2 最终用户协议 311
10.2.3 图标与卷标 311
10.2.4 为应用定义版本 311
10.2.5 为已付费应用提供访问控制授权 312
10.2.6 弄乱源代码 312
10.2.7 获取密钥,对应用进行数字签名 312
10.2.8 有特色的图像和屏幕截图 312
10.2.9 用于推广应用的视频 313
10.3 为应用定价:免费或收费 314
10.3.1 付费应用 314
10.3.2 免费应用 314
10.4 利用In-App Advertising货币化应用 315
10.5 货币化应用:通过应用内计费功能销售虚拟商品 315
10.6 注册Google Play 316
10.7 设置Google Payments商家账号 317
10.8 将应用上载到Google Play 317
10.9 在应用里启动Play Store 319
10.10 管理Google Play中的应用 319
10.11 其他的Android应用市场 319
10.12 其他移动应用平台及应用移植 320
10.13 应用的市场推广 320
10.14 小结 323
索引 324

前言/序言

前 言

欢迎来到使用Android软件开发工具集(SDK)、Java编程语言以及快速发展的Android Studio集成开发环境(IDE)的充满活力的世界,进行Android智能手机和平板电脑应用的开发。书中讲解的许多Android开发技术,同样适用于Android Wear和Android TV应用的开发。这样在学习完本书之后,就为这些平台下的应用开发做好了充分准备。

本书将为专业软件开发人员提供前沿的移动计算技术。本书是以开发完整的、可运行的应用来讲解各种概念的,而没有采用只分析代码段的方式。第2~9章中的每一章都给出了一个应用。这些章的开头是应用的介绍,并通过测试给出了一个或者多个执行样本的结果,还给出了一个技术概览。然后,会详细分析源代码。全部源代码都可以从以下站点下载:

学习本书时,建议在IDE中打开相应的源代码。

对Android应用开发人员而言,机会无处不在。Android设备的销售以及应用的下载量,正呈现出指数级的增长。第一代Android手机于2008年10月面世。根据IDC公布的数据,到2015年3月底,全球智能手机市场Android占据78%的份额,Apple为18.3%,而Blackberry只有0.3% 。在2014年 ,Android设备的出货量超过10亿。2015年Google I/O开发者大会上,Google宣布在过去12个月中,Google Play已经有500亿的应用安装量。Google Play是Google的Android应用市场 。主流的移动平台以及运营商之间激烈的市场竞争,导致了技术的快速更新和价格的下滑。此外,数百个Android设备厂商之间的竞争,也推动了Android社区里硬件和软件的创新。

关于版权以及代码许可的说明

本书中的全部代码以及Android应用的版权都由Deitel & Associates公司所有,书中样本程序的授权许可遵循Creative Commons Attribution 3.0 Unported License(http://creativecommons.org/ licenses/by/3.0),但是它们不能在教育性的其他教程和课本中使用(书本格式或者数字化格式)。此外,作者及出版方并不以任何形式、明确或暗示地保证书中的程序或文档的正确性。对于使用这些程序而导致的直接或间接损失,作者和出版方不承担任何责任。欢迎读者将书中的这些应用作为你自己的应用的起点,在已有的这些功能上进行改动(需满足前述版权条款)。如果有任何问题,可联系deitel@deitel.com。

读者对象

本书假定读者已经具备一定的Java编程基础,并了解面向对象编程。同时,读者还需熟悉XML。Android工程中包含许多XML文件,但通常是通过编辑器与它们交互,从而无须直接了解它们。书中使用的是完整的、可运行的应用,所以如果不了解Java,但具有以C语言为基础的面向对象编程语言的经验,比如C++,C#,Swift或者Objective-C,则应当能够很快熟悉这些材料,学习到大量的Java知识以及Java风格的面向对象编程。

本书并非一本Java教程。如果对学习Java编程感兴趣,请参考作者的下列出版物:

? Java for Programmers, 3/e(http://www.deitel.com/books/javafp3)

? Java Fundamentals, 2/e(视频课程)。这些视频内容可通过SafariBooksOnline.com订阅,也可从Informit.com和Udemy.com购买。订阅和购买的链接,请参见http://www.deitel.com/ LiveLessons。

? Java How to Program, 10/e(http://www.deitel.com/books/jhtp10,书号:0-13-380780-0)

如果不熟悉XML,可参考如下的免费在线教程:

? http://www.ibm.com/developerworks/xml/newto

? http://www.w3schools.com/xml/default.asp

? http://bit.ly/DeitelXMLBasics

? http://bit.ly/StructureXMLData

本书特点

以下为本书的一些主要特点。

应用驱动的方法。讲解应用的每一章(第2~9章)中都给出了一个完整的应用,探讨了每一个应用的用途,给出了运行应用时的屏幕输出,通过测试进行了检验,并概述了构建应用的技术和体系结构。接着,搭建出每个应用的GUI,给出了完整的代码并详细分析它们。探讨了应用中所用的Android API的编程概念并演示了它们的功能。

Android 6 SDK。本书讲解了Android 6中新推出的软件开发工具集(SDK)的各种特性。

Android Studio IDE。(以IntelliJ IDEA社区版本为基础的)免费Android Studio,是目前Google主推的Android应用开发IDE,而以前的Android开发工具以Eclipse IDE为基础。Android Studio加上免费的Android软件开发工具集(SDK),以及免费的Java开发工具集(JDK),提供了创建、运行、调试Android应用的所有软件,并可利用它们将应用输出和分发(例如,将应用上载到Google Play)。关于如何下载和安装这些软件的说明,请参见后面的“学前准备”小节。

材料设计。利用新的材料设计规范,Google在Android 5中引入了新的Android外观:

这个规范中,Google概述了材料设计的目标和原则,然后详细给出了各种要求,包括动画技术、屏幕元素样式、元素定位、特定用户界面组件的使用、用户界面模式、辅助性、国际化,等等。目前,Google在它的移动应用和基于浏览器的应用中,采用的就是这个材料设计规范。

材料设计是一个宏大的主题,本书中将主要关注如下几个方面:

? 使用Android内置的材料主题。这些材料主题可使Android内置的用户界面组件外观符合材料设计规范。

? 使用内置的Android Studio应用模板。这些模板由Google设计,因此满足材料设计规范。

? 针对特定需求,使用材料设计指南推荐的用户界面组件,比如FloatingActionButton、TextInputLayout和RecyclerView。

除了查看Google的材料设计规范之外,可能还需要参考图书:

本书由专业人士和Ian Clifton(他为本书第一版写过评论)编写。Ian写到:“Google在2014年推出了材料设计指南,从而给出了一种设计系统,为应用的外观和行为提供了建议。这样做的目的是提供一种设计框架,以提升应用的可视化表现,并为应用创建了一种行为一致性,这在以前的应用中是不存在的。Android User Interface Design:Implemeating Material Design for Developers, 2/e详细讲解了材料设计,为所有开发人员提供有关以用户为中心的设计、颜色原理、文字排列、交互模式以及其他方面的指导。”

支持库及应用兼容性库。当使用新的Android特性时,开发人员会遇到的一个大挑战是与以前的Android平台的向后兼容性问题。现在的许多新特性都是通过支持库引入的,这些支持库使得开发人员能够在应用中使用新特性,对当前和以往的Android平台都提供支持。其中的一个支持库称为AppCompat库。Android Studio应用模板中可以使用这个库以及它的主题,使得所创建的应用能够在大多数Android设备上运行。如果从一开始就用AppCompat创建应用,就可以避免当需要支持旧版本的Android时重新部署代码的问题。

此外,2015年的Google I/O开发人员大会上,还为Android 2.1及更高版本中使用材料设计而推出了Android设计支持库(Android Design Support Library)。参见

材料设计支持已经内置于大多数Android Studio应用模板中。

REST Web服务与JSON。第7章讲解的Weather Viewer应用,演示了如何调用表述性状态转移(Representational State Transfer,REST)Web服务——应用中提供的16日天气预报服务,其数据来自于OpenWeatherMap.org。REST Web服务以JavaScript Object Notation (JSON) 的形式返回天气预报信息,JSON是一种流行的文本数据交换格式,用键/值对数据表示对象。这个应用还使用了来自于org.json的几个类,以处理Web服务的JSON响应。

Android 6.0许可。Android 6.0采用一种新的许可模式,以达到更好的用户体验。在此之前,Android要求在安装时用户就已经获得了应用所需的全部许可,这经常导致用户不愿安装应用。在新模式下,安装应用时不需要任何许可,而是在首次运行相关的特性时才会要求用户已经获得了许可。第5章讲解了这种新的许可模式,并将它用于将一个图像保存到外部存储设备时。

Fragment。从第4章开始,将使用Fragment(碎片)来创建并管理每一个应用GUI的分区。可以组合多个Fragment来创建充分利用平板电脑屏幕尺寸的用户界面。也可以很容易地互换不同的Fragment,以使GUI更显动态。第9章中将这样做。

View-Holder模式,ListView和RecyclerView。第7~9章中的几个应用,都会显示可滚动的数据列表。第7章在ListView中呈现数据并



Android 6 应用开发案例精解(第三版) 面向初学者到进阶者的全面实战指南 内容简介 本书是一本旨在为广大Android开发爱好者、在校学生及希望进入移动开发领域的专业人士提供系统、深入的Android应用开发指导的实战教程。本版在继承前两版广受好评的“案例驱动”教学模式的基础上,全面更新了内容,紧密围绕Android 6.0(Marshmallow)及后续版本的重要特性和主流开发技术,力求为读者呈现一个全面、实用、与时俱进的Android开发知识体系。 本书最大的亮点在于其“案例驱动”的学习理念。我们深知,枯燥的理论讲解难以激发学习兴趣,而通过实际项目来学习,不仅能加深对概念的理解,更能迅速掌握开发技巧。因此,本书精心设计了多个具有代表性、实用性强的应用开发案例,涵盖了从基础UI构建到高级网络通信、从本地数据存储到云端服务集成等Android开发的方方面面。读者将跟随本书的指引,一步步地构建出功能完善、用户体验良好的真实应用程序,在这个过程中,自然而然地掌握相关的开发知识和编程思维。 本书内容涵盖以下主要模块: 第一部分:Android开发基础与环境搭建 Android开发概览与准备: 详细介绍Android操作系统的架构、发展历程以及Android开发的核心优势。我们将指导您如何搭建完整的Android开发环境,包括JDK的安装配置、Android Studio的安装与设置,以及模拟器和真机调试环境的准备,确保您能够顺利开始编码。 第一个Android应用: 通过一个简单的“Hello, World!”应用,让您快速熟悉Android Studio的基本操作,了解Activity、AndroidManifest.xml、资源文件等核心概念,并学会如何运行和调试您的第一个Android应用。 Android项目结构与核心组件: 深入剖析Android项目的结构,解释res目录、src目录、AndroidManifest.xml等关键文件的作用。详细介绍Android四大组件——Activity、Service、Broadcast Receiver、Content Provider的生命周期、工作原理及基本用法,为后续深入学习打下坚实基础。 用户界面(UI)设计与布局: 学习XML布局文件的编写,掌握LinearLayout、RelativeLayout、FrameLayout、ConstraintLayout等常用布局方式,以及如何创建和使用各种UI控件,如TextView、EditText、Button、ImageView、CheckBox、RadioButton、Spinner等。本书将通过实际案例展示如何构建美观、响应式的用户界面。 事件处理与用户交互: 学习如何响应用户的点击、触摸等交互事件,理解事件监听器(Listener)的工作机制,并演示如何实现各种常见的交互逻辑,如按钮点击跳转、文本输入处理等。 第二部分:Android 6.0(Marshmallow)核心特性与进阶开发 Android 6.0运行时权限模型: 这是Android 6.0最重要的变化之一。本书将详细讲解新的运行时权限请求机制,包括如何检查、请求以及处理用户对敏感权限的授予或拒绝,并通过实际案例演示如何安全、合规地处理这些权限,例如访问相机、存储、位置信息等。 Doze模式与App Standby: 深入解析Android 6.0引入的省电特性Doze模式和App Standby,理解它们如何影响应用的后台行为,并指导读者如何优化应用的后台任务,以适应这些省电机制,避免应用在低电量或闲置状态下被过度限制。 直接分享(Direct Share): 学习如何利用Android 6.0的Direct Share API,让用户能够更便捷地将内容分享到其他应用。本书将通过案例演示如何实现自定义的分享目标,提升用户分享体验。 自定义View与高级UI: 学习如何创建自定义View,实现更复杂的UI效果,如进度条、图表、滑动菜单等。掌握Canvas绘图、自定义属性、View的测量、布局和绘制流程,能够构建出独具特色的用户界面。 Fragment与多窗口支持: 深入讲解Fragment的概念、生命周期以及Fragment与Activity的交互。学习如何使用Fragment实现灵活的UI设计,支持平板电脑等大屏幕设备的多窗口布局。 资源管理与国际化: 学习如何有效地管理应用资源,包括字符串、颜色、尺寸、图片等,并掌握Android应用的国际化和本地化方法,为应用提供多语言支持。 第三部分:Android数据存储与网络通信 SharedPreferences: 学习使用SharedPreferences进行简单的键值对数据存储,适用于保存用户偏好设置、少量配置信息等。 SQLite数据库: 深入讲解Android内置的SQLite数据库,包括数据库的创建、表的定义、CRUD(增删改查)操作,以及使用SQLiteOpenHelper进行数据库版本管理。本书将通过实际数据库应用案例,让读者熟练掌握SQLite的使用。 Content Provider: 理解Content Provider的作用,学习如何创建和使用Content Provider来管理和共享应用数据,以及如何访问系统提供的Content Provider,如联系人、媒体库等。 文件存储: 学习Android的文件存储机制,包括内部存储、外部存储(SD卡),以及如何进行文件的读写操作,了解其权限和适用场景。 网络通信基础: 学习使用Android SDK提供的HttpURLConnection或更常用的第三方库(如OkHttp)进行HTTP网络请求。理解GET、POST等请求方法,以及如何处理请求和响应。 JSON数据解析: 掌握JSON数据格式,学习使用Gson、Jackson等库进行JSON数据的序列化和反序列化,这是网络通信中处理数据的重要环节。 RESTful API集成: 通过实际案例,演示如何集成RESTful API,例如从服务器获取数据并在应用中展示,以及如何向服务器发送数据。 第四部分:Android高级特性与第三方库应用 后台服务(Service)的深入应用: 学习创建和管理后台服务,理解Service的启动模式(startService, bindService)、前台服务以及服务与UI的通信机制。 Broadcast Receiver: 深入学习Broadcast Receiver的注册、发送和接收广播,以及如何实现应用内或跨应用的消息通知。 多线程与异步处理: 掌握Android中的多线程编程,学习使用Thread、Handler、AsyncTask(已被弃用,但概念重要,并会介绍替代方案如Kotlin Coroutines或RxJava)以及Java Concurrency API进行耗时操作的异步处理,避免ANR(Application Not Responding)错误。 第三方库的应用: 介绍并实践集成当下主流的第三方库,例如: 图片加载库(如Glide, Fresco): 学习如何高效、智能地加载和缓存图片,极大提升UI性能。 网络请求库(如Retrofit): 学习如何使用Retrofit等库简化网络请求的编写,提高开发效率。 依赖注入框架(如Dagger/Hilt): 介绍依赖注入的概念和用法,以及如何使用Hilt(Jetpack官方推荐)来简化Android应用的开发和测试。 RxJava/Kotlin Coroutines: 介绍响应式编程概念,以及如何使用RxJava或Kotlin Coroutines进行更优雅的异步编程和事件流处理。 Material Design组件应用: 学习如何使用Google提供的Material Design组件库,如CoordinatorLayout, AppBarLayout, FloatingActionButton, CardView, RecyclerView等,快速构建出符合Material Design规范的现代化UI。 Android Jetpack组件: 重点介绍Android Jetpack中的核心组件,如ViewModel, LiveData, Room Persistence Library, Navigation, WorkManager等,展示如何利用这些组件来简化和规范Android开发,提高应用的健壮性和可维护性。 第五部分:应用发布与最佳实践 应用调试与性能优化: 学习使用Android Studio的调试工具,如Logcat, Profiler,查找和解决Bug。掌握常见的性能优化技巧,提升应用的运行效率和用户体验。 应用签名与发布: 学习如何为您的Android应用进行签名,并了解APK打包、混淆、优化的过程,最终如何将应用发布到Google Play Store或其他应用市场。 单元测试与集成测试: 介绍Android应用的测试策略,学习如何编写单元测试和集成测试,保证代码质量,提高应用的稳定性。 版本控制工具(Git): 简要介绍Git的基本使用,强调版本控制在团队协作和项目管理中的重要性。 本书的特色: 案例丰富且贴近实战: 每个核心知识点都通过一个或多个实际应用案例来呈现,让读者在解决实际问题的过程中学习。 循序渐进,结构清晰: 从基础概念到高级特性,本书的章节安排逻辑性强,难度逐步提升,适合不同水平的读者。 内容全面且与时俱进: 涵盖了Android开发所需的核心技术栈,并紧密结合Android 6.0及之后版本的最新特性和发展趋势。 强调代码质量与最佳实践: 不仅教授如何实现功能,更关注如何写出高质量、可维护的代码,引导读者遵循行业最佳实践。 适合自学与课堂教学: 无论是独立学习还是作为教学参考,本书都能提供扎实的理论基础和丰富的实践经验。 目标读者: 零基础的Android开发初学者。 有一定Java或编程基础,希望转行或学习Android开发的开发者。 在校计算机相关专业的学生。 希望提升Android开发技能,了解最新特性的Android开发者。 寻求系统、实用的Android应用开发教程的爱好者。 通过本书的学习,您将能够独立设计和开发出功能完善、用户体验良好的Android应用程序,为您的移动开发之路奠定坚实的基础。

用户评价

评分

坦白说,在我收到《Android 6 应用开发案例精解(第三版)》之前,我对于Android 6这一特定版本的开发内容并没有抱有太高的期望,毕竟技术更新迭代的速度太快了,我担心这本书会显得有些过时。然而,事实证明我的担忧是多余的。这本书在讲解Android 6的核心API的同时,并没有忽略对一些通用性设计模式和最佳实践的深入探讨,这使得书中的内容即使放到现在来看,依然具有极高的参考价值。例如,关于权限管理的部分,作者不仅详细阐述了Android 6引入的运行时权限模型,还提供了非常详尽的权限申请和处理的流程,包括如何友好的向用户解释权限的必要性,以及如何处理用户拒绝权限的情况,这些都是开发中必不可少但又容易被忽略的细节。此外,书中对于网络请求的处理也让我眼前一亮,它并没有仅仅停留在HTTP Client的使用上,而是引入了Retrofit和OkHttp等当下流行的网络库,并给出了响应式编程的实践案例,让我能够轻松构建出高效、可靠的网络通信模块。我特别欣赏书中对于内存优化和性能调优的章节,通过对Bitmap加载、线程池使用以及UI渲染的深入分析,我学会了如何从根本上提升应用的运行效率,避免常见的性能瓶颈。

评分

在我开始阅读《Android 6 应用开发案例精解(第三版)》之前,我对Android中的后台服务和进程管理一直感到困惑,总觉得难以把握其精髓。然而,这本书的出现彻底改变了我的看法。作者通过精心设计的几个典型场景,比如后台音乐播放、数据同步以及位置服务,将复杂而抽象的后台服务概念变得生动易懂。我印象最深刻的是关于WorkManager的讲解,它完美地解决了Android中后台任务调度的各种痛点,比如适配不同Android版本、处理设备重启以及电池优化等问题,让我能够更加自信地去实现那些需要长期在后台运行的功能。另外,书中对进程保活机制的探讨也相当深入,作者并没有鼓励开发者采取一些“黑科技”式的保活手段,而是从Android系统的角度出发,解释了为什么会出现进程被杀的情况,并提供了合理且合规的解决方案,例如利用JobScheduler和Foreground Service,这对于我们理解Android系统的资源调度机制非常有帮助。总而言之,这本书为我打开了一扇了解Android后台机制的窗口,让我对如何设计和实现可靠的后台服务有了全新的认识。

评分

作为一名在Android开发领域摸爬滚打了几年的程序员,对于市面上层出不穷的开发书籍,我一直抱持着审慎的态度。直到最近,我终于有幸翻阅了《Android 6 应用开发案例精解(第三版)》,这本书让我对Android开发的理解上升到了一个新的高度。这本书最大的亮点在于其“App-Driven Approach”,也就是说,它不是那种枯燥乏味的理论堆砌,而是通过一个个实际的应用案例,循序渐进地引导读者掌握Android开发的精髓。我尤其喜欢其中关于自定义View的章节,作者并没有止步于讲解View的绘制流程,而是深入剖析了如何利用Canvas和Paint实现各种酷炫的动画效果,并且还提供了几个非常实用的自定义控件示例,如仿ios的下拉刷新控件和类似高德地图的缩放控件,这些代码直接可以拿来用,大大节省了我的开发时间。此外,书中对Fragment生命周期的讲解也十分透彻,通过几个不同的Fragment交互场景,我才真正理解了Fragment的强大之处,并且学会了如何高效地管理Fragment的堆栈,避免了之前经常遇到的Fragment重叠和状态丢失问题。这本书不仅仅是一本技术手册,更像是一位经验丰富的导师,用最贴近实战的方式,教会我如何构建出健壮、高效、用户体验良好的Android应用。

评分

作为一名有几年开发经验的开发者,我对于市面上那些仅限于API罗列的书籍已经感到厌倦。《Android 6 应用开发案例精解(第三版)》这本书则完全不同,它以一种非常巧妙的方式,将理论知识与实际开发紧密结合。我最喜欢它的地方在于,它不仅仅是教你“怎么做”,更重要的是告诉你“为什么这么做”。例如,在讲解数据库操作时,书中没有仅仅介绍SQLite的使用,而是深入分析了Room Persistence Library的优势,并结合实际的笔记应用案例,展示了如何优雅地进行数据存储和管理,包括数据库的迁移、索引的优化等等。这让我能够更好地理解数据库设计的原理,并能写出更具可维护性的代码。另外,书中对于UI布局和性能优化的部分也做得相当出色。作者通过对比不同的布局方式(如ConstraintLayout和LinearLayout),详细解释了它们在性能和灵活性上的差异,并提供了大量的优化技巧,比如如何减少过度绘制、如何合理使用ViewHolder模式来优化列表性能等等,这些实用的建议让我能够快速提升应用的UI表现。

评分

对于初学者而言,Android开发中的各种组件和概念往往显得杂乱无章,难以形成系统的认识。而《Android 6 应用开发案例精解(第三版)》这本书,凭借其清晰的结构和丰富的案例,极大地降低了学习的门槛。我曾多次在学习某个新功能时感到无从下手,但这本书就像一位耐心的向导,一步步地引领我走向目标。特别是在讲解Activity和Intent的部分,作者通过构建一个简单的社交应用,生动地演示了Activity之间的跳转、数据传递以及返回结果的处理,让我对Activity的生命周期和Intent的工作原理有了直观的理解。此外,书中对于多线程和异步编程的讲解也十分到位,通过AsyncTask、Handler和ThreadPoolExecutor等多种方式的对比和应用,我能够根据不同的场景选择最合适的异步处理方案,避免了ANR(Application Not Responding)的发生,提升了应用的响应速度。这本书的案例设计非常贴合实际开发需求,让我能够学以致用,快速将所学知识应用到自己的项目中,这对于提升开发效率和技术信心有着非常重要的作用。

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有