Android Studio开发实战:从零基础到App上线(第2版) 作者:欧阳燊著出版时间:2018年版丛编项: 移动开发丛书内容简介 本书是一部Android开发的实战教程,由浅入深、由基础到高级,带领读者一步一步走进App开发的神奇世界。 全书共分为16章。其中,前8章是基础部分,主要讲解Android Studio的环境搭建、App开发的各种常用控件、App的数据存储方式、如何调试App并将App发布上线;后8章是进阶部分,主要讲解App开发的设备操作、网络通信、事件、动画、多媒体、融合技术、第三方开发包、性能优化等。书中在讲解知识点的同时给出了大量实战范例,方便读者迅速将所学的知识运用到实际开发中。通过本书的学习,读者能够掌握3类主流App的基本开发技术,包括购物App(电子商务)、聊天App(即时通信)、打车App(交通出行)。另外,能够学会开发一些趣味应用,包括简单计算器、房贷计算器、万年历、日程表、手机安全助手、指南针、卫星浑天仪、应用超市、抠图工具、全景图库、动感影集、影视播放器、音乐播放器、WiFi共享器、电子书架等。 本书适用于Android开发的广大从业者、有志于转型App开发的程序员、App开发的业余爱好者,也可作为大中专院校与培训机构的Android课程教材。目录目 录第1章 Android Studio环境搭建 11.1 Android Studio简介 11.2 Android Studio的安装 21.2.1 开发机配置要求 21.2.2 安装依赖的软件 21.2.3 安装Android Studio 31.2.4 下载Android的SDK 51.3 运行小应用Hello World 61.3.1 创建新项目 61.3.2 编译项目/模块 81.3.3 创建模拟器 91.3.4 在模拟器上运行App 91.4 App的工程结构 111.4.1 工程目录说明 111.4.2 编译配置文件build.gradle 121.4.3 App运行配置AndroidManifest.xml 131.4.4 在代码中操纵控件 141.5 准备开始 151.5.1 使用快捷键 151.5.2 安装SVN工具 161.5.3 安装常用插件 171.5.4 导入已经存在的工程 191.5.5 新建一个Activity页面 201.6 小结 22第2章 初级控件 232.1 屏幕显示 232.1.1 像素 232.1.2 颜色 252.1.3 屏幕分辨率 262.2 简单布局 272.2.1 视图View的基本属性 272.2.2 线性布局LinearLayout 302.2.3 滚动视图ScrollView 322.3 简单控件 342.3.1 文本视图TextView 342.3.2 按钮Button 372.3.3 图像视图ImageView 392.3.4 图像按钮ImageButton 432.4 图形基础 452.4.1 图形Drawable 452.4.2 状态列表图形 462.4.3 形状图形 472.4.4 九宫格图片 502.5 实战项目:简单计算器 532.5.1 设计思路 532.5.2 小知识:日志Log/提示Toast 552.5.3 代码示例 562.6 小结 57第3章 中级控件 593.1 其他布局 593.1.1 相对布局RelativeLayout 593.1.2 框架布局FrameLayout 633.2 特殊按钮 643.2.1 复选框CheckBox 643.2.2 开关按钮Switch 653.2.3 单选按钮RadioButton 663.3 适配视图基础 683.3.1 下拉框Spinner 683.3.2 数组适配器ArrayAdapter 693.3.3 简单适配器SimpleAdapter 703.4 编辑框 723.4.1 文本编辑框EditText 723.4.2 自动完成编辑框AutoCompleteTextView 773.5 活动Activity基础 783.5.1 Activity的生命周期 783.5.2 使用Intent传递消息 833.5.3 向下一个Activity传递参数 853.5.4 向上一个Activity返回参数 863.6 实战项目:房贷计算器 893.6.1 设计思路 893.6.2 小知识:文本工具TextUtils 903.6.3 代码示例 913.7 实战项目:登录App 933.7.1 设计思路 933.7.2 小知识:提醒对话框AlertDialog 943.7.3 代码示例 963.8 小结 98第4章 数据存储 1004.1 共享参数SharedPreferences 1004.1.1 共享参数的基本用法 1004.1.2 实现记住密码功能 1024.2 数据库SQLite 1034.2.1 SQLite的基本用法 1034.2.2 数据库帮助器SQLiteOpenHelper 1044.2.3 优化记住密码功能 1104.3 SD卡文件操作 1124.3.1 SD卡的基本操作 1124.3.2 公有存储空间与私有存储空间 1144.3.3 文本文件读写 1154.3.4 图片文件读写 1164.4 应用Application基础 1184.4.1 Application的生命周期 1184.4.2 利用Application操作全局变量 1194.5 内容提供与处理 1214.5.1 内容提供器ContentProvider 1214.5.2 内容解析器ContentResolver 1234.5.3 内容观察器ContentObserver 1284.6 实战项目:购物车 1314.6.1 设计思路 1314.6.2 小知识:菜单Menu 1324.6.3 代码示例 1364.7 小结 139第5章 高级控件 1405.1 日期时间控件 1405.1.1 日期选择器DatePicker 1405.1.2 时间选择器TimePicker 1425.2 列表类视图 1445.2.1 基本适配器BaseAdapter 1445.2.2 列表视图ListView 1485.2.3 网格视图GridView 1545.3 翻页类视图 1585.3.1 翻页视图ViewPager 1585.3.2 翻页标题栏PagerTitleStrip/PagerTabStrip 1615.3.3 简单的启动引导页 1635.4 碎片Fragment 1665.4.1 静态注册 1665.4.2 动态注册/碎片适配器FragmentStatePagerAdapter 1705.4.3 改进的启动引导页 1735.5 广播Broadcast基础 1755.5.1 发送/接收临时广播 1765.5.2 定时器AlarmManager 1785.6 实战项目:万年历 1805.6.1 设计思路 1805.6.2 小知识:月份选择器MonthPicker 1815.6.3 代码示例 1835.7 实战项目:日程表 1845.7.1 设计思路 1845.7.2 小知识:震动器Vibrator 1855.7.3 代码示例 1855.8 小结 187第6章 自定义控件 1886.1 自定义视图 1886.1.1 声明属性 1886.1.2 构造对象 1916.1.3 测量尺寸 1926.1.4 宽高尺寸的动态调整 1956.1.5 绘制视图 1986.2 自定义动画 2046.2.1 任务Runnable 2046.2.2 下拉刷新动画 2056.2.3 圆弧进度动画 2076.3 自定义对话框 2086.3.1 对话框Dialog 2086.3.2 改进的日期对话框 2096.3.3 自定义多级对话框 2136.4 自定义通知栏 2146.4.1 通知推送Notification 2146.4.2 进度条ProgressBar 2186.4.3 远程视图RemoteViews 2206.4.4 自定义通知的文本颜色设定 2236.5 服务Service基础 2256.5.1 Service的生命周期 2256.5.2 推送服务到前台 2296.6 实战项目:手机安全助手 2306.6.1 设计思路 2306.6.2 小知识:应用包管理器PackageManager 2326.6.3 代码示例 2346.7 小结 235第7章 组合控件 2367.1 标签栏 2367.1.1 标签按钮 2367.1.2 实现底部标签栏 2387.2 导航栏 2467.2.1 工具栏Toolbar 2467.2.2 溢出菜单OverflowMenu 2487.2.3 搜索框SearchView 2507.2.4 标签布局TabLayout 2537.3 横幅条 2607.3.1 自定义指示器 2607.3.2 实现横幅轮播Banner 2637.3.3 仿京东顶到状态栏的Banner 2677.4 增强型列表 2717.4.1 循环视图RecyclerView 2717.4.2 布局管理器LayoutManager 2757.4.3 动态更新循环视图 2807.5 材质设计库 2827.5.1 协调布局CoordinatorLayout 2827.5.2 应用栏布局AppBarLayout 2857.5.3 可折叠工具栏布局CollapsingToolbarLayout 2877.6 实战项目:仿支付宝的头部伸缩特效 2907.6.1 设计思路 2917.6.2 小知识:导航栏的滚动标志 2927.6.3 代码示例 2937.7 实战项目:仿淘宝主页 2987.7.1 设计思路 2987.7.2 小知识:下拉刷新布局SwipeRefreshLayout 2997.7.3 代码示例 3037.8 小结 305第8章 调试与上线 3068.1 调试工作 3068.1.1 模拟器调试 3068.1.2 真机调试 3118.1.3 导出APK安装包 3138.2 准备上线 3158.2.1 版本设置 3158.2.2 上线模式 3168.2.3 数据加密 3208.3 安全加固 3258.3.1 反编译 3258.3.2 代码混淆 3278.3.3 第三方加固及重签名 3298.4 发布到应用商店 3318.4.1 注册开发者账号 3318.4.2 创建并提交应用 3328.5 小结 334第9章 设备操作 3359.1 摄像头 3359.1.1 表面视图SurfaceView 3359.1.2 使用Camera拍照 3379.1.3 纹理视图TextureView 3439.1.4 使用Camera 2拍照 3449.1.5 运行时动态授权管理 3469.2 麦克风 3499.2.1 拖动条SeekBar 3499.2.2 音量控制 3509.2.3 录音与播音 3529.2.4 录像与放映 3609.3 传感器 3629.3.1 传感器的种类 3629.3.2 摇一摇——加速度传感器 3649.3.3 指南针——磁场传感器 3659.3.4 计步器、感光器和陀螺仪 3689.4 手机定位 3709.4.1 开启定位功能 3719.4.2 获取定位信息 3739.5 短距离通信 3789.5.1 NFC近场通信 3789.5.2 红外遥控 3849.5.3 蓝牙BlueTooth 3889.6 实战项目:仿微信的发现功能 3959.6.1 设计思路 3959.6.2 小知识:全球卫星导航系统 3979.6.3 代码示例 3999.7 小结 406第10章 网络通信 40710.1 多线程 40710.1.1 消息传递Message 40710.1.2 进度对话框ProgressDialog 41110.1.3 异步任务AsyncTask 41410.1.4 异步服务IntentService 42010.2 HTTP接口访问 42310.2.1 网络连接检查 42310.2.2 移动数据格式JSON 42510.2.3 JSON串与实体类自动转换 42710.2.4 HTTP接口调用 42810.2.5 HTTP图片获取 43210.3 上传和下载 43410.3.1 下载管理器DownloadManager 43510.3.2 文件对话框 44110.3.3 文件上传 44210.4 套接字Socket 44510.4.1 网络地址InetAddress 44510.4.2 Socket通信 44610.5 实战项目:仿应用宝的应用更新功能 45110.5.1 设计思路 45110.5.2 小知识:查看APK文件的包信息 45210.5.3 代码示例 45410.6 实战项目:仿手机QQ的聊天功能 45710.6.1 设计思路 45710.6.2 小知识:可折叠列表视图ExpandableListView 45910.6.3 代码示例 46410.7 小结 468第11章 事件 46911.1 按键事件 46911.1.1 检测软键盘 46911.1.2 检测物理按键 47211.1.3 音量调节对话框 47411.2 触摸事件 47911.2.1 手势事件的分发流程 47911.2.2 手势事件处理MotionEvent 48311.2.3 手写签名 48611.3 手势检测 48811.3.1 手势检测器GestureDetector 48811.3.2 飞掠视图ViewFlipper 49111.3.3 手势控制横幅轮播 49411.4 手势冲突处理 49811.4.1 上下滚动与左右滑动的冲突处理 49811.4.2 内部滑动与翻页滑动的冲突处理 50111.4.3 正常下拉与下拉刷新的冲突处理 50611.5 实战项目:抠图神器——美图变变 51011.5.1 设计思路 51011.5.2 小知识:二维图像的基本加工 51111.5.3 代码示例 51211.6 实战项目:虚拟现实的全景图库 51411.6.1 设计思路 51411.6.2 小知识:三维图形接口OpenGL 51611.6.3 代码示例 52911.7 小结 532第12章 动画 53412.1 帧动画 53412.1.1 帧动画的实现 53412.1.2 显示GIF动画 53612.1.3 淡入淡出动画 53812.2 补间动画 53912.2.1 补间动画的种类 53912.2.2 补间动画的原理 54412.2.3 集合动画 54712.2.4 在飞掠横幅中使用补间动画 54912.3 属性动画 55112.3.1 属性动画的用法 55112.3.2 属性动画组合 55512.3.3 插值器和估值器 55712.4 矢量动画 56112.4.1 矢量图形 56112.4.2 可缩放矢量图形SVG标记 56312.4.3 利用属性动画实现矢量动画 56512.4.4 仿支付宝的支付成功动画 56812.5 动画的实现手段 57212.5.1 使用延时重绘 57212.5.2 设置状态参数 57412.5.3 滚动器Scroller 57512.6 实战项目:仿QQ空间的动感影集 57712.6.1 设计思路 57712.6.2 小知识:画布的绘图层次 57812.6.3 代码示例 58312.7 小结 584第13章 多媒体 58513.1 相册 58513.1.1 画廊Gallery 58513.1.2 图像切换器ImageSwitcher 58913.1.3 图片查看器——青青相册 59213.2 音频播放 59613.2.1 铃声Ringtone 59613.2.2 声音池SoundPool 59913.2.3 音轨录播AudioTrack 60213.3 视频播放 60513.3.1 视频视图VideoView 60613.3.2 媒体控制条MediaController 60913.3.3 自定义播放控制条 61113.4 多窗口 61313.4.1 分屏——多窗口模式 61413.4.2 画中画——特殊的多窗口 61713.4.3 自定义悬浮窗 61913.4.4 截图和录屏 62413.5 实战项目:影视播放器——爱看剧场 62613.5.1 设计思路 62613.5.2 小知识:竖屏与横屏切换 62713.5.3 代码示例 63013.6 实战项目:音乐播放器——浪花音乐 63413.6.1 设计思路 63413.6.2 小知识:可变字符串SpannableString 63613.6.3 代码示例 63913.7 小结 644第14章 融合技术 64614.1 网页集成 64614.1.1 资产管理器AssetManager 64614.1.2 网页视图WebView 64814.1.3 简单浏览器 65114.2 JNI开发 65814.2.1 NDK环境搭建 65814.2.2 创建JNI接口 66114.2.3 JNI实现加解密 66614.3 局域网共享 66914.3.1 无线网络管理器WifiManager 67014.3.2 连接指定WiFi 67114.3.3 开关热点 67214.3.4 点对点蓝牙传输 67414.4 实战项目:共享经济弄潮儿——WiFi共享器 68314.4.1 设计思路 68314.4.2 小知识:NetBIOS协议 68414.4.3 代码示例 68814.5 实战项目:笔墨飘香之电子书架 69314.5.1 设计思路 69314.5.2 小知识:PDF文件渲染器PdfRenderer 69414.5.3 代码示例 69614.6 小结 701第15章 第三方开发包 70215.1 地图SDK 70215.1.1 查看签名信息 70215.1.2 百度地图 70415.1.3 高德地图 71015.2 分享SDK 71415.2.1 QQ分享 71515.2.2 微信分享 71615.3 支付SDK 72115.3.1 支付宝支付 72115.3.2 微信支付 72315.4 语音SDK 72415.4.1 文字转语音TextToSpeech 72415.4.2 语音识别 72915.4.3 语音合成 73315.5 实战项目:仿滴滴打车 73415.5.1 设计思路 73415.5.2 小知识:评分条RatingBar 73515.5.3 代码示例 73815.6 小结 739第16章 性能优化 74116.1 布局文件优化 74116.1.1 减少重复布局 74116.1.2 自适应调整布局 74416.1.3 自定义窗口主题 74616.2 内存泄漏处理 74816.2.1 内存泄漏的检测 74816.2.2 内存泄漏的发生 74916.2.3 内存泄漏的预防 75516.3 线程池管理 75816.3.1 普通线程池 75816.3.2 定时器线程池 76016.4 省电模式 76116.4.1 检测当前电量 76116.4.2 检测屏幕开关 76316.4.3 休眠模式对App的影响 76516.5 实战项目:网络图片缓存框架 76816.5.1 设计思路 76816.5.2 小知识:LRU缓存策略 76916.5.3 代码示例 77216.6 小结 780附录 781附录一 仿流行App的常用功能 781附录二 Android各版本的新增功能说明 782附录三 手机硬件与App开发的关联 784附录四 专业术语索引 785 上一篇: Android 9 编程通俗演义 牛搞著 2019年版 下一篇: Android全埋点解决方案 王灼洲著 2019年版