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

图书网 2018年10月20日10:39:21
评论
2.3K
摘要

适读人群 :本书适合希望从事 Android 应用开发的初学者, 也适合作为该领域中高级开发者的参考书。
*书中采用了以应用为中心的方法,包含8个完整编码的Android应用。
*专业的程序员开发者指南,讲解如何利用Android 6和Android Studio开发用于智能手机和平板电脑的应用。
*实用、例子丰富的Android教程。

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

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

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

第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 6 应用开发案例精解(第三版)[Android 6 for Programmers: An App-Driven Approach] 精彩文摘

前 言

欢迎来到使用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风格的面向对象编程。

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

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

操作系统/系统开发

计算机操作系统(第四版)pdf

计算机操作系统(第四版) 内容简介 由汤小丹、梁红兵、哲凤屏、汤子瀛编著的《计算机操作系统(第4版高等学校计算机类十二五规划教材)》对传统操作系统(0S)和现代操作系统均做了较为全面的介绍。全书共分1...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: