内容简介
本书以零基础讲解为宗旨,用实例引导读者深入学习,采取“基础入门→核心技术→高级应用→项目开发实战”的讲解模式,深入浅出地讲解Android的各项技术及实战技能。
本书第1篇“基础入门”主要讲解走进Android的世界、Android虚拟设备、Android布局与实现等;第2篇“核心技术”主要讲解基础UI组件、高级UI组件、精通活动、服务与广播、事件与消息、使用资源、图形与图像处理、多媒体开发等;第3篇“高级应用”主要讲解数据存储、数据共享、传感器、网络开发、精通地图定位、Android碎片开发、Android开发的技巧与调试等;第4篇“项目开发实战”主要讲解开发俄罗斯方块、开发股票操盘手、开发考试系统、开发网上商城。
本书赠送10大超值王牌资源,包括本书实例源文件、精美教学幻灯片、精选本书教学视频、16个经典项目开发完整源码、Android开发疑难问题解答、Android常见错误及解决方案、Android系统开发常用类查询、Android移动开发工程师面试题、Android项目开发经验及技巧大汇总等。读者可以通过QQ群(案例课堂VIP):451102631获取赠送资源。
本书适合任何想学习Android移动开发的人员,无论您是否从事计算机相关行业,无论您是否接触过Android移动开发,通过学习均可快速掌握Android在项目开发中的知识和技巧。
前 言
“软件开发案例课堂”系列图书是专门为软件开发和数据库初学者量身定做的一套学习用书,整套书具有以下特点。
前沿科技
无论是软件开发还是数据库设计,我们都精选较为前沿或者用户群较大的领域推进,帮助大家认识和了解最新动态。
权威的作者团队
组织国家重点实验室和资深应用专家联手编著该套图书,融合丰富的教学经验与优秀的管理理念。
学习型案例设计
以技术的实际应用过程为主线,全程采用图解和同步多媒体结合的教学方式,生动、直观、全面地剖析使用过程中的各种应用技能,降低难度,提升学习效率。
为什么要写这样一本书
Android平台由互联网与社会信息科技的领袖Google公司开发,由于其开放性和自由性,以及App商店商业模式带来的巨大活力,出现了一大批热爱和追随Android平台的开发人员和设计人员。目前学习和关注Android的人越来越多,而很多Android的初学者都苦于找不到一本通俗易懂、容易入门和案例实用的参考书。通过本书的案例实训,可以很快地上手流行的工具,提高职业化能力,并有助于帮助解决公司与学生的双重需求问题。
本书特色
* 零基础、入门级的讲解
无论您是否从事计算机相关行业,无论您是否接触过Android移动开发,都能从本书中找到最佳起点。
* 超多、实用、专业的范例和项目
本书在编排上紧密结合深入学习Android移动开发技术的先后过程,从Android移动开发的环境搭建开始,带领大家逐步深入地学习各种应用技巧,侧重实战技能,使用简单易懂的实际案例进行分析和操作指导,让读者学习起来简明轻松,操作起来有章可循。
* 随时检测自己的学习成果
每章首页均提供了“本章要点”,以指导读者重点学习及学后检查。
大部分章节最后的“跟我学上机”板块,均根据本章内容精选而成,读者可以随时检测自己的学习成果和实战能力,做到融会贯通。
* 细致入微、贴心提示
本书在讲解过程中,使用了“注意”和“提示”等小栏目,使读者在学习过程中更清楚地了解相关操作、理解相关概念,并轻松掌握各种操作技巧。
* 专业创作团队和技术支持
您在学习过程中遇到任何问题,均可加入QQ群(案例课堂VIP)进行提问,专业人员会在线答疑。
超值赠送资源
* 全程同步教学录像
涵盖本书所有知识点,详细讲解每个实例及项目的开发过程及技术关键点。比看书更能轻松地掌握书中所有的Java编程语言知识,而且扩展的讲解部分使您能得到比书中更多的收获。
* 超多容量王牌资源大放送
赠送大量王牌资源,包括本书实例源文件、精美教学幻灯片、精选本书教学视频、16个经典项目开发完整源码、Android开发疑难问题解答、Android常见错误及解决方案、Android系统开发常用类查询、Android移动开发工程师面试题、Android项目开发经验及技巧大汇总等。读者可以通过清华大学官网本书页面获取下载资源。
读者对象
* 没有任何Android开发基础的初学者。
* 有一定的Java编程基础,想精通Android移动开发的人员。
* 有一定的Android移动开发基础,没有项目开发经验的人员。
* 正在进行毕业设计的学生。
* 大专院校及培训学校的老师和学生。
创作团队
本书由刘玉红、蒲娟编著,参加编写的人员还有李玉阳、王斌、赵建军、靳伟杰、谭小艳、闫川华、赵志霞、王佰成、李国离、苏双喜、马天宇、丁远征、杨文建、李茂有、靳燕霞、陈孟毫、胡秀芳、李鑫、王湖芳、刘玉萍、胡同夫、裴雨龙、付红、王攀登、孙若淞、包慧利、梁云梁和周浩浩。本书在编写过程中,我们尽所能地将最好的讲解呈现给读者,但也难免有疏漏和不妥之处,敬请不吝指正。
编 者
目 录
第1篇 基 础 入 门第1章 走进Android的世界——快速搭建开发环境 31.1 认识Android 41.1.1 Android简介 41.1.2 Android系统架构 41.1.3 Android四大组件 61.2 Android模拟器 71.2.1 模拟器概述 71.2.2 模拟器和真机的使用区别 81.3 开发Android应用前的准备 81.3.1 Android系统开发要求 81.3.2 Android软件开发包 91.4 Android开发环境搭建 91.4.1 Java环境搭建 91.4.2 安装Android Studio 141.4.3 Android Studio开发工具介绍 191.5 大神解惑 211.6 跟我学上机 22第2章 跨平台测试利器——Android虚拟设备 232.1 HelloWorld应用分析 242.1.1 新建一个Android项目 242.1.2 启动模拟器 262.1.3 运行程序 282.1.4 项目结构 292.1.5 代码分析 312.2 第三方模拟器Genymotion 332.2.1 注册Genymotion 332.2.2 下载Genymotion 332.2.3 安装Genymotion 342.2.4 引入Genymotion 362.2.5 启动Genymotion并添加设备 382.3 大神解惑 402.4 跟我学上机 40第3章 Android布局与实现 413.1 Android布局 423.1.1 创建一个错误布局的程序 423.1.2 相对布局 453.1.3 线性布局 503.1.4 帧布局 513.1.5 表格布局 523.1.6 网格布局 553.1.7 布局管理器的综合应用 593.1.8 约束布局 603.2 UI设计相关概念 643.2.1 View是什么 643.2.2 ViewGroup是什么 653.2.3 通过Java代码控制UI界面 653.2.4 通过Java代码与XML混合控制UI界面 673.3 大神解惑 683.4 跟我学上机 68第2篇 核 心 技 术第4章 基础UI组件 714.1 文本类组件 724.1.1 TextView组件 724.1.2 EditText组件 734.2 按钮类组件 754.2.1 普通按钮 754.2.2 图片按钮 764.2.3 单选按钮 784.2.4 多选按钮 824.3 日期时间类组件 854.3.1 日期选择组件 854.3.2 时间选择组件 864.3.3 日历视图组件 884.3.4 文本时钟组件 894.3.5 计时器组件 904.4 大神解惑 934.5 跟我学上机 93第5章 高级UI组件 955.1 进度条类组件 965.1.1 进度条组件 965.1.2 拖动条组件 975.1.3 星级评分组件 995.2 图像类组件 1015.2.1 图像视图组件 1015.2.2 图像切换组件 1035.2.3 网格视图组件 1055.3 列表类组件 1095.3.1 下拉列表框组件 1105.3.2 列表视图组件 1125.3.3 RecyclerView组件 1155.4 通用组件 1185.4.1 滚动视图组件 1185.4.2 选项卡组件 1205.5 大神解惑 1225.6 跟我学上机 122第6章 精通活动 1236.1 认识活动 1246.2 深入活动 1256.2.1 初建Activity 1256.2.2 配置Activity 1266.2.3 Activity的启动与关闭 1276.3 构建多个活动的应用 1306.3.1 数据交换之Bundle 1306.3.2 调用页面返回数据 1346.4 组件间的信使Intent 1386.4.1 什么是Intent 1386.4.2 应用Intent 1396.4.3 Intent的属性 1396.4.4 Intent的种类 1416.4.5 Intent过滤器 1426.5 大神解惑 1436.6 跟我学上机 144第7章 服务与广播 1457.1 认识服务 1467.1.1 服务的分类 1467.1.2 创建服务 1477.1.3 启动与停止服务 1507.1.4 绑定服务 1537.2 IntentService 1567.3 认识广播 1577.3.1 广播的分类 1577.3.2 接收系统广播 1577.3.3 发送广播 1607.4 大神解惑 1627.5 跟我学上机 162第8章 事件与消息 1638.1 事件的处理 1648.1.1 基于监听的事件处理 1648.1.2 基于回调的事件处理 1668.2 物理按键事件 1678.3 触摸事件 1698.3.1 长按事件 1698.3.2 触摸事件 1708.3.3 触摸与单击的区别 1718.4 Toast提示消息 1728.4.1 makeText方法 1738.4.2 定制Toast 1738.5 AlertDialog消息 1748.6 状态栏通知消息 1788.7 Handler消息 1808.7.1 Handler的运行机制 1808.7.2 Handler类中的常用方法 1818.7.3 Handler与Looper、MessageQueue的关系 1828.8 大神解惑 1848.9 跟我学上机 184第9章 使用资源 1859.1 字符串资源 1869.1.1 字符串资源文件 1869.1.2 使用字符串资源 1879.2 颜色资源 1879.2.1 颜色资源文件 1879.2.2 颜色的设置 1889.2.3 文本框使用颜色 1889.3 数组资源 1899.3.1 定义资源文件 1899.3.2 使用数组资源 1899.4 尺寸资源 1919.4.1 尺寸单位 1919.4.2 尺寸资源文件 1919.4.3 使用尺寸资源 1929.5 布局资源 1939.6 图像资源 1949.6.1 Drawable资源 1949.6.2 Drawable中的XML资源 1969.6.3 Mipmap资源 1999.7 主题和样式资源 1999.7.1 主题资源 1999.7.2 样式资源 2019.7.3 主题编辑器的使用 2019.8 菜单资源 2039.8.1 静态创建菜单 2039.8.2 动态创建菜单 2049.8.3 使用菜单 2059.9 国际化 2079.10 大神解惑 2099.11 跟我学上机 210第10章 图形与图像处理 21110.1 bitmap图片 21210.1.1 Bitmap类 21210.1.2 BitmapFactory类 21210.2 绘图常用类 21410.2.1 Paint类 21410.2.2 Canvas类 21510.2.3 Path类 21710.3 绘制图像 21710.4 绘制路径 21910.5 动画 22110.5.1 逐帧动画 22110.5.2 补间动画 22210.5.3 布局动画 22610.5.4 属性动画 22910.6 大神解惑 23210.7 跟我学上机 232第11章 多媒体开发 23311.1 音频与视频 23411.1.1 MediaPlayer播放音频 23411.1.2 SoundPool播放音频 23611.1.3 MediaPlayer播放视频 23811.1.4 VideoView播放视频 24011.2 摄像头 24211.2.1 使用系统相机 24211.2.2 自定义相机拍照 24511.3 大神解惑 25011.4 跟我学上机 250第3篇 高 级 应 用第12章 数据存储 25312.1 文件存储读写 25412.1.1 文件操作模式及方法 25412.1.2 读写文件操作 25512.1.3 通过DDMS查看存储内容 25912.2 SharedPreferences存储 26012.2.1 获取SharedPreferences对象 26012.2.2 向SharedPreferences中存入 数据 26012.2.3 读取SharedPreferences中的 数据 26212.3 数据库存储 26412.3.1 sqlite3工具的使用 26412.3.2 代码操作数据库 26612.3.3 SQLiteOpenHelper类 26912.4 大神解惑 27312.5 跟我学上机 274第13章 数据共享 27513.1 数据共享的标准 27613.1.1 ContentProvider简介 27613.1.2 什么是URI 27613.1.3 权限 27713.1.4 运行时权限的获取 27813.2 访问其他程序的数据 28113.2.1 ContextResolver的基本用法 28113.2.2 创建自己的共享数据 28413.2.3 辅助类 28613.2.4 打包与解析数据 28713.2.5 展示数据 28913.3 大神解惑 29113.4 跟我学上机 291第14章 传感器 29314.1 传感器简介 29414.1.1 常用传感器简介 29414.1.2 使用传感器开发 29414.2 传感器实战 29614.2.1 方向传感器 29614.2.2 加速度传感器 29714.3 指南针项目 30014.3.1 创建项目 30014.3.2 重绘方法 30014.3.3 更新位置 30114.3.4 国际化开发 30314.3.5 界面布局 30614.4 大神解惑 30814.5 跟我学上机 308第15章 网络开发 30915.1 网络通信 31015.1.1 网络通信的两种形式 31015.1.2 TCP协议基础 31015.1.3 TCP简单通信 31115.1.4 使用多线程进行通信 31115.2 使用URL访问网络资源 31615.2.1 使用URL读取网络资源 31715.2.2 使用URLconnection提交 请求 31915.3 JSON数据 32515.3.1 JSON语法 32515.3.2 JSON和XML的比较 32615.4 构造与解析JSON数据 32815.5 大神解惑 33115.6 跟我学上机 331第16章 精通地图定位 33316.1 引入地图 33416.1.1 下载百度地图SDK 33416.1.2 创建百度应用 33516.1.3 将百度SDK加入工程 33816.2 地图开发 34016.2.1 实例显示百度地图 34016.2.2 定位到自己 34116.2.3 实现方向跟随 34416.3 辅助功能 34616.3.1 模式切换 34616.3.2 地图切换 34816.4 大神解惑 34916.5 跟我学上机 350第17章 Android碎片开发 35117.1 Fragment实现 35217.1.1 Fragment概述 35217.1.2 静态实现Fragment 35417.1.3 动态实现Fragment 35617.2 Fragment与Activity 36017.2.1 Fragment的生命周期 36017.2.2 Activity向Fragment传值 36417.2.3 Fragment向Activity传值 36517.2.4 Fragment与Fragment之间的 传值 36717.3 Fragment的两个子类 36917.3.1 ListFragment 36917.3.2 DialogFragment 37017.4 大神解惑 37217.5 跟我学上机 372第18章 Android开发的技巧与调试 37318.1 快捷键的使用 37418.1.1 Log类快捷键 37418.1.2 开发快捷键 37518.2 调试技巧 38218.2.1 断点设置 38218.2.2 其他调试技巧 38418.3 DDMS的功能和使用 38618.4 大神解惑 38818.5 跟我学上机 388第4篇 项目开发实战第19章 项目实训1——开发俄罗斯 方块 39119.1 开发背景 39219.2 游戏原理 39219.2.1 组成单元 39219.2.2 运动原理 39419.3 创建项目 39419.3.1 开发环境需求 39519.3.2 创建新项目 39519.4 数据存储类 39619.4.1 数据存储 39619.4.2 数据初始化 39719.4.3 获取方块下标 39819.5 控制类 39819.5.1 编写控制类 39919.5.2 加载方块 39919.5.3 是否可移动算法 40019.5.4 定时下降算法 40119.5.5 是否可消行算法 40219.5.6 方块触底算法 40319.5.7 速降算法 40319.5.8 方向控制算法 40419.5.9 变形算法 40419.6 界面绘制类 40619.6.1 编写界面绘制类 40619.6.2 界面绘制 40719.6.3 界面布局 40919.7 项目总结 411第20章 项目实训2——开发股票 操盘手 41320.1 系统功能设计 41420.2 创建项目 41420.2.1 开发环境需求 41420.2.2 创建新项目 41420.3 欢迎界面设置 41520.3.1 欢迎界面布局 41520.3.2 欢迎界面逻辑设置 41620.4 功能界面设置 41720.4.1 主界面逻辑 41720.4.2 界面中的格栅类 42020.4.3 触碰位置判断 42120.4.4 绘制经线 42120.4.5 绘制纬线 42220.4.6 分时界面 42220.5 K线界面设置 42720.5.1 成交蜡烛图 42720.5.2 绘制详细信息 42820.5.3 绘制参考信息 43020.6 项目总结 432第21章 项目实训3——开发考试系统 43321.1 系统功能设计 43421.2 创建项目 43421.2.1 开发环境需求 43421.2.2 创建新项目 43421.3 欢迎界面设置 43521.3.1 欢迎界面布局 43521.3.2 欢迎界面逻辑处理 43621.4 部分类的封装 43821.4.1 数据库类 43821.4.2 窗口类 43921.4.3 文件类 44021.5 主界面与跳转页面 44121.5.1 主界面 44121.5.2 答题界面 44521.5.3 题目类 44621.5.4 查看答案 44721.5.5 编号选题 44821.5.6 收藏题目 44921.6 数据库相关操作 44921.7 项目总结 450第22章 项目实训4——开发网上商城 45122.1 系统功能设计 45222.2 创建项目 45222.2.1 开发环境需求 45222.2.2 创建新项目 45222.3 欢迎界面 45322.3.1 欢迎界面布局 45322.3.2 欢迎界面逻辑 45422.4 主界面 45422.4.1 界面分类跳转 45522.4.2 搜索页面 45622.4.3 广告轮播 45622.4.4 拍照按钮 45722.5 搜索页面 45722.6 分类页面 45822.6.1 分类数据存储 45822.6.2 分类数据显示 45922.7 购物车页面 46022.8 用户信息页面 46122.8.1 跳转不同页面 46122.8.2 账号登录页面 46222.8.3 退出弹窗 46322.8.4 更多信息 46422.9 自定义伸缩类 46422.9.1 成员变量 46522.9.2 触摸事件 46522.9.3 回缩动画 46622.10 项目总结 467