描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302518044丛书名: 21世纪高等学校计算机专业实用规划教材
《Android 从入门到精通》按照“即重理论更重实践”的编写思路,为读者提供满足实战需求的Android开发学习内容。既适合Android初学者,也适合具备了一定Android开发经验但需要加深知识理解的高级读者。
作为Android应用开发书籍,本书既适合Android初学者,也适合虽具备一定Android开发经验但需要加深知识理解的读者。本书共15章,主要内容包括Android常用UI组件介绍、Android事件处理机制、Android四大组件、Android中的动画、Android网络应用、Android APP项目实战等几大部分,全书由浅入深地详细介绍了Android的每个开发细节。本书内容翔实,示例丰富,案例典型。编者按照“既重理论更重实践”的编写思路为读者提供满足实战需求的Android开发知识内容。读者所需要学习的,正是本书描述的。 本书可作为高等院校本、专科计算机相关专业的Android入门教材,也可作为计算机编程爱好者的自学参考书。
目录
第1章 Android应用和开发环境 1
1.1 Android的历史和发展 1
1.1.1 Android的起源 1
1.1.2 Android的发展与前景 1
1.1.3 Android的系统架构 2
1.2 搭建Android开发环境 4
1.2.1 需要的工具 4
1.2.2 搭建开发环境 5
1.2.3 Android Studio的安装 9
1.3 开始个安卓应用 12
1.3.1 创建HelloWorld项目 12
1.3.2 启动Android模拟器 14
1.3.3 运行个Android应用 17
1.3.4 Android应用结构分析 18
1.4 Android应用的基本组件介绍 25
1.4.1 Activity和View 26
1.4.2 Service 26
1.4.3 BroadcastReceiver 26
1.4.4 ContentProvider 27
1.4.5 Intent和IntentFilter 27
1.5 本章小结 27
1.6 习题 28
第2章 Android应用的界面编程 29
2.1 界面编程和视图 29
2.1.1 视图组件和容器组件 29
2.1.2 使用XML布局文件
控制UI界面 30
2.1.3 在代码中控制UI界面 30
2.1.4 自定义UI组件 32
2.2 布局管理器 35
2.2.1 什么是布局 35
2.2.2 线性布局 36
2.2.3 表格布局 39
2.2.4 帧布局 43
2.2.5 相对布局 44
2.2.6 网格布局 46
2.2.7 布局 49
2.3 几组重要的UI组件 49
2.3.1 TextView及其子类 49
2.3.2 ImageView及其子类 56
2.3.3 AdapterView及其子类 60
2.3.4 Adapter接口及其实现类 62
2.4 本章小结 67
2.5 习题 68
第3章 常用的UI组件介绍 69
3.1 菜单 69
3.1.1 选项菜单 69
3.1.2 上下文菜单 71
3.1.3 弹出式菜单 74
3.1.4 设置与菜单项关联的Activity 76
3.2 对话框的使用 77
3.2.1 使用AlertDialog建立对话框 77
3.2.2 创建DatePickerDialog与TimePickerDialog对话框 85
3.2.3 创建ProgressDialog进度对话框 86
3.2.4 关于PopupWindow及DialogTheme窗口 88
3.3 ProgressBar及其子类 90
3.3.1 进度条的功能和用法 91
3.3.2 拖动条的功能和用法 93
3.3.3 星级评分条的功能和用法 96
3.4 本章小结 97
3.5 习题 98
第4章 Android事件处理 99
4.1 基于监听的事件处理 99
4.1.1 事件监听的处理模型 99
4.1.2 创建监听器的几种形式举例 102
4.1.3 在标签中绑定事件处理器 104
4.2 基于回调的事件处理 105
4.2.1 回调机制 105
4.2.2 基于回调的事件传播 106
4.2.3 与监听机制对比 107
4.3 响应系统设置的事件 108
4.3.1 Configuration类简介 108
4.3.2 onConfigurationChanged方法 110
4.4 Handler消息传递机制 111
4.4.1 Handler类简介 112
4.4.2 Handler、Loop及MessageQueue三者的关系 113
4.5 本章小结 117
4.6 习题 117
第5章 深入理解Activity与Fragment 119
5.1 建立、配置和使用Activity 119
5.1.1 Activity介绍 119
5.1.2 配置Activity 121
5.1.3 Activity的启动与关闭 122
5.1.4 使用Bundle在Activity之间交换数据 125
5.2 Activity的生命周期和启动模式 130
5.2.1 Activity的生命周期演示 130
5.2.2 Activity的4种启动模式 135
5.3 Fragment详解 138
5.3.1 Fragment的生命周期 138
5.3.2 创建Fragment 143
5.3.3 Fragment与Activity通信 145
5.3.4 Fragment管理与Fragment事务 146
5.4 本章小结 146
5.5 习题 147
第6章 使用Intent和IntentFilter进行通信 148
6.1 Intent对象简述 148
6.2 Intent属性及intent-filter配置 149
6.2.1 Component属性 149
6.2.2 Action、Category属性与intent-filter配置 150
6.2.3 Data、Type属性与intent-filter配置 152
6.2.4 Flag属性 154
6.3 本章小结 154
6.4 习题 155
第7章 Android应用的资源 156
7.1 Android应用资源概述 156
7.1.1 资源的类型以及存储方式 156
7.1.2 使用资源 157
7.2 字符串、颜色与样式资源 159
7.2.1 颜色值的定义 160
7.2.2 定义字符串、颜色与样式资源文件 160
7.3 数组资源 161
7.4 使用Drawable资源 165
7.4.1 图片资源 165
7.4.2 StateListDrawable资源 165
7.4.3 AnimationDrawable资源 167
7.5 使用原始XML资源 168
7.5.1 定义使用原始XML资源 168
7.5.2 使用原始XML文件 169
7.6 样式和主题资源 171
7.6.1 样式资源 171
7.6.2 主题资源 172
7.7 本章小结 172
7.8 习题 173
第8章 图形与图像处理 174
8.1 使用简单图片 174
8.2 绘图 177
8.2.1 Android绘图基础:Canvas、Paint等 178
8.2.2 Path类 180
8.3 图形特效处理 183
8.3.1 使用Matrix控制变换 183
8.3.2 使用drawBitmapMesh扭曲图像 186
8.4 逐帧动画 188
8.5 补间动画 190
8.5.1 补间动画与插值器Interpolator 190
8.5.2 位置、大小、旋转度与透明度改变的补间动画 191
8.6 属性动画 194
8.6.1 属性动画API 194
8.6.2 使用属性动画 196
8.7 使用SurfaceView实现动画 201
8.8 本章小结 206
8.9 习题 206
第9章 Android数据存储与IO 208
9.1 使用SharedPreferences 208
9.1.1 SharedPreferences简介 208
9.1.2 SP的存储位置和格式 209
9.2 File存储 211
9.2.1 打开应用中数据文件的IO流 211
9.2.2 读写SD卡上的文件 214
9.3 SQLite数据库 216
9.3.1 SQLiteDatabase简介 216
9.3.2 创建数据库和表 218
9.3.3 使用SQL语句操作SQLite数据库 218
9.3.4 使用特定方法操作SQLite数据库 222
9.3.5 事务 223
9.3.6 SQLiteOpenHelper类 224
9.4 手势 227
9.4.1 手势检测 228
9.4.2 增加手势 232
9.5 本章小结 235
9.6 习题 235
第10章 使用ContentProvider实现数据共享 237
10.1 数据共享标准:ContentProvider 237
10.1.1 ContentProvider简介 237
10.1.2 URI简介 239
10.1.3 使用ContentResolver操作数据 239
10.2 开发ContentProvider 240
10.2.1 开发ContentProvider的子类 240
10.2.2 使用ContentResolver调用方法 242
10.3 操作系统的ContentProvider 244
10.3.1 使用ContentProvider管理联系人 244
10.3.2 使用ContentProvider管理多媒体 246
10.4 监听ContentProvider的数据改变 250
10.5 本章小结 252
10.6 习题 252
第11章 Service与BroadcastReceiver 254
11.1 Service简介 254
11.1.1 创建和配置Service 254
11.1.2 启动和停止Service 256
11.1.3 绑定本地Service 257
11.1.4 Service的生命周期 260
11.1.5 IntentService简介 261
11.2 电话管理器 264
11.3 短信管理器 269
11.4 音频管理器 270
11.5 手机闹钟服务 272
11.6 接收广播消息 275
11.6.1 BroadcastReceiver简介 276
11.6.2 发送广播 276
11.6.3 有序广播 278
11.7 本章小结 280
11.8 习题 281
第12章 Android网络应用 282
12.1 基于TCP协议的网络通信 282
12.1.1 TCP协议基础 282
12.1.2 使用Socket进行通信 284
12.1.3 加入多线程 288
12.2 使用URL访问网络资源 292
12.2.1 使用URL读取网络资源 292
12.2.2 使用URLConnection提交请求 293
12.3 使用HTTP访问网络 295
12.4 使用WebService进行网络编程 301
12.4.1 WebService平台概述 301
12.4.2 使用Android应用调用WebService 303
12.5 本章小结 307
12.6 习题 307
第13章 多媒体应用开发 309
13.1 音频和视频的播放 309
13.1.1 使用MediaPlayer播放音频 309
13.1.2 音乐特效控制 311
13.1.3 使用VideoView播放视频 316
13.2 使用MediaRecorder录制音频 319
13.3 控制摄像头拍照 322
13.4 本章小结 329
13.5 习题 329
第14章 文字控实战项目(一) 331
14.1 项目概述 331
14.1.1 项目分析 331
14.1.2 项目功能展示 332
14.2 启动界面 334
14.2.1 启动页面流程图 334
14.2.2 开发启动页面 335
14.3 MVP架构简介 341
14.4 获取网络数据的工具类 341
14.5 MVP之Model层开发 344
14.5.1 bean类 345
14.5.2 IModel接口的开发 347
14.5.3 Model实现类的开发 349
14.6 MVP之Presenter层开发 354
14.6.1 监听接口开发 355
14.6.2 IPresenter接口的开发 356
14.6.3 Presenter实现类的开发 356
14.7 本章小结 360
14.8 习题 360
第15章 文字控实战项目(二) 361
15.1 MVP之View层开发 361
15.1.1 IView接口开发 361
15.1.2 项目界面开发 362
15.1.3 View实现类开发 370
15.2 自定义适配器 375
15.3 数据转换工具 378
15.4 权限控制 381
15.5 本章小结 381
15.6 习题 382
前言
在瞬息万变的IT时代,一群怀揣梦想的人创办了千锋教育,投身到IT培训行业。七年来,一批批有志青年加入千锋教育,为了梦想笃定前行。千锋教育秉承“用良心做教育”的理念,为培养“IT精英”而付出一切努力,为什么会有这样的梦想,我们先来听一听用人企业和求职者的心声:
“现在符合企业需求的IT技术人才非常紧缺,这方面的优秀人才我们会像珍宝一样对待,可为什么至今没有合格的人才出现?”
“面试的时候,用人企业问能做什么,这个项目如何来实现,需要多长的时间,我们当时都蒙了回答不上来。”
“这已经是面试过的第十家公司了,如果在不行的话,是不是要考虑转行了,难道大学里的四年都白学了?”
“这已经是参加面试的N个求职者了,为什么都是计算机专业毕业,当问到项目如何实现时,却怎么连思路都没有呢?”
……
这些心声并不是个别现象,而是中国社会反映出的一种普遍现象。高校的IT教育与企业的真实需求存在脱节,如果高校的相关课程仍然不进行更新的话,毕业生将面临难以就业的困境,很多用人单位表示,高校毕业生表面上知识丰富,但在学校所学的知识绝大多数在实际工作中用之甚少,甚至完全用不上。针对上述存在的问题,国务院也作出了关于加快发展现代职业教育的决定,千锋教育所做的事情就是配合高校达成产学合作。
千锋教育致力于打造IT职业教育全产业链人才服务平台,在全国拥有数十家分校,数百名讲师,坚持以教学为本的方针,采用面对面教学,传授企业实用技能。教学大纲紧跟企业需求,拥有全国一体化就业体系。千锋的价值观即“做真实的自己,用良心做教育”。
针对高校教师的服务
(1)千锋教育基于近七年来的教育培训经验,精心设计了包含
“教材 授课资源 考试系统 测试题 辅助案例”的教学资源包,节约教师的备课时间,缓解教师的教学压力,显著提高教学质量。
(2)本书配套代码视频,网址为http://www.codingke.com/。
(3)本书配备了千锋教育优秀讲师录制的教学视频,按本书知识结构体系部署到了教学辅助平台(扣丁学堂)上,这些教学视频可以作为教学资源使用,也可以作为备课参考。
高校教师如需索要配套教学资源,请关注(扣丁学堂)师资服务平台,扫描下方二维码关注微信公众平台获取。
扣丁学堂
针对高校学生的服务
(1)学IT有疑问,就找千问千知,它是一个有问必答的IT社区,平台上的专业答疑辅导老师承诺工作时间3小时内答复读者学习中遇到的专业问题。读者也可以通过扫描下方的二维码,关注千问千知微信公众平台,浏览其他学习者在学习中分享的问题和收获。
千问千知
(2)学习太枯燥,想了解其他学校的伙伴都是怎样学习的吗?可以加入“扣丁俱乐部”。“扣丁俱乐部”是千锋教育联合各大高校发起的公益计划,专门面向对IT感兴趣的大学生提供免费的学习资源和问答服务,已有超过30多万名学习者从中获益。
就业难,难就业,千锋教育让就业不再难!
关于本书
本书可作为高等院校本、专科计算机相关专业的Android入门教材。此外,本书还包含了千锋教育Android基础全部的课程内容,是一本适合广大计算机编程爱好者的优秀读物。
得红包
添加小千QQ号或微信号2133320438,不仅可以获取本书配套源代码及习题答案,还可能获得小千随时发放的“助学金红包”。
致谢
千锋教育高教产品研发部在近一年时间里参阅了大量Android基础教材和图书,通过反复的修改终完成了本书。另外,多名院校老师也参与了本书的部分编写与指导工作,除此之外,千锋教育500多名学员也参与了本书的试读工作,他们站在初学者的角度对本书提出了许多宝贵的修改意见,在此一并表示衷心的感谢。
意见反馈
在本书的编写过程中,虽然力求完美,但不足之处在所难免,欢迎各界专家和读者朋友们给予宝贵意见,联系方式: [email protected]。
千锋教育 高教产品研发部
2018年8月 于北京
第3章
常用的UI组件介绍
本章学习目标
掌握本章中讲解的所有UI组件。
我们在实际开发中会经常使用UI组件来组合项目的界面,而常用的UI组件无非就是几种,至于特殊的组件可以通过第2章中的自定义UI组件来绘制。通过对本章的学习,读者应掌握常用UI组件的用法。
3.1 菜 单
Android中的菜单(menu)在桌面应用中十分广泛,几乎所有的桌面应用都会使用到。Android应用中的菜单分为三种:选项菜单(OptionMenu)、上下文菜单(ContextMenu)、弹出式菜单(PopupMenu),本节依次介绍这些内容。
3.1.1 选项菜单
从Android 3.1开始引入了全新的操作栏,扩展了很多功能,例如安置菜单选项、配置应用图标作为导航按钮等。
可显示在操作栏上的菜单称为选项菜单(OptionMenu)。选项菜单提供了一些选项,用户选择后可进行相应的操作。
一般为Android应用添加选项菜单的步骤如下。
(1)重写Activity的onCreateOptionsMenu(Menu menu)方法,在该方法里调用Menu对象的方法添加菜单项。
(2)如果想要引用程序响应菜单项的单击事件,就要继续重写Activity的onOptionsItemSelected(MenuItem mi)方法。
添加菜单项的方式与UI组件的使用方式一样,可以在代码中使用也可以在XML布局文件中使用。Android同样推荐在XML中使用菜单,具体为在appsrcmainres文件夹中创建名称为menu的文件夹,创建完成之后在menu文件夹中新建根标签为menu的布局文件,来看具体的示例代码。
【例3-1】 XML文件中的选项菜单options_menu.xml。
1
2 xmlns:app=”http://schemas.android.com/apk/res-auto”>
3 4 android:title=”个菜单项”/>
5 6 android:title=”第二个菜单项”/>
7 8 android:title=”第三个菜单项”/>
9
菜单定义完成之后需要在代码中使用才可以看到效果,Java代码如下:
1 public class MainActivity extends AppCompatActivity {
2 @Override
3 protected void onCreate(Bundle savedInstanceState) {
4 super.onCreate(savedInstanceState);
5 setContentView(R.layout.activity_main);
6 }
7 @Override
8 public boolean onCreateOptionsMenu(Menu menu) {
9 getMenuInflater().inflate(R.menu.option_menu, menu);
10 return true;
11 }
12 @Override
13 public boolean onOptionsItemSelected(MenuItem item) {
14 switch (item.getItemId()) {
15 case R.id.menu_item1:
16 Toast.makeText(MainActivity.this,
17 “个菜单项”, Toast.LENGTH_LONG).show();
18 break;
19 case R.id.menu_item2:
20 Toast.makeText(MainActivity.this,
21 “第二个菜单项”, Toast.LENGTH_LONG).show();
22 break;
23 case R.id.menu_item3:
24 Toast.makeText(MainActivity.this,
25 “第三个菜单项”, Toast.LENGTH_LONG).show();
26 break;
27 }
28 return true;
29 }
30 }
运行结果如图3.1所示。
评论
还没有评论。