具体描述
编辑推荐
以博学谷项目为主线,从项目的需求分析、产品设计、产品开发一直至项目上线,讲解了项目开发的全过程。 内容简介
本书是在《Android 移动开发基础案例教程》的基础上编写的,涵盖 Android 基础的全部 知识,不仅是对 Android 基础的巩固与提高,更是对项目经验的积累。本书以博学谷项目为主线, 从项目的需求分析、产品设计、产品开发一直到项目上线,讲解了项目开发的全过程。 作者简介
“中关村黑马程序员训练营”是由传智播客教育科技有限公司(简称传智播客)联合中关村软件园、CSDN,并委托传智播客进行教学实施的软件开发高端培训机构,致力于服务各大软件企业,解决当前软件开发技术飞速发展,而企业招不到优秀人才的困扰。 目前,“中关村黑马程序员训练营”已成长为行业“学员质量好、课程内容深、企业满意”的移动开发高端训练基地,并被评为中关村软件园重点扶持人才企业。 目录
第1章 项目综述 1
1.1 项目分析 .......................................... 1
1.1.1 项目名称............................... 1
1.1.2 项目概述............................... 1
1.1.3 开发环境............................... 2
1.1.4 模块说明............................... 2
1.2 效果展示 .......................................... 2
1.2.1 欢迎界面和课程界面........... 2
1.2.2 课程详情界面....................... 3
1.2.3 习题详情界面....................... 3
1.2.4 “我”的界面....................... 4
小结 ........................................................... 6
思考题 ....................................................... 6
第2章 界面设计 7
2.1 欢迎界面 .......................................... 7
2.2 课程界面 ........................................ 10
2.2.1 制作标题栏......................... 10
2.2.2 制作广告轮播图................. 11
2.2.3 制作视频列表标题 ............. 16
2.2.4 制作课程列表界面 ............. 18
2.2.5 制作底部导航栏................. 21
2.2.6 制作课程详情界面 ............. 24
2.2.7 添加课程列表的交互事件 .....33
2.2.8 添加欢迎界面的交互事件 ... 34
2.3 习题界面 ........................................ 34
2.3.1 制作标题栏......................... 34
2.3.2 制作习题列表界面 ............. 35
2.3.3 修改底部导航栏................. 38
2.3.4 制作习题详情界面导航栏................................. 39
2.3.5 制作习题详情界面 ............. 41
2.3.6 添加选项的交互事件......... 44
2.3.7 添加习题列表的交互事件 ... 47
2.3.8 添加底部导航栏的交互事件..................................... 48
小结 ............49
思考题 ........49
第3章 注册与登录模块 50
3.1 欢迎界面 ............................................................50
综述 ..50
【任务3-1】欢迎界面的实现 ...........................51
【任务3-2】欢迎界面逻辑代码 .......................53
3.2 注册 ...55
综述 ..55
【任务3-3】标题栏 ...........................................55
【任务3-4】注册界面 .......................................57
【任务3-5】MD5加密算法 ...............................59
【任务3-6】注册界面逻辑代码 .......................61
3.3 登录 ...64
综述 ..64
【任务3-7】登录界面 .......................................65
【任务3-8】登录界面逻辑代码 .......................68
小结 ............72
思考题 ........72
第4章 “我”的模块 73
4.1 “我”的界面 ....................................................73
综述 ..73
【任务4-1】底部导航栏 ...................................74
【任务4-2】底部导航栏逻辑代码 ...................77
【任务4-3】“我”的界面 ...............................84
【任务4-4】AnalysisUtils工具类 .....................87
【任务4-5】“我”的界面逻辑代码 ...............87
4.2 设置 ...92
综述 ..92
【任务4-6】设置界面 .......................................92
【任务4-7】设置界面逻辑代码 .......................95
4.3 修改密码 ............................................................98
综述 ..98
【任务4-8】修改密码界面 ...............................99
【任务4-9】修改密码界面逻辑代码 .............101
4.4 设置密保和找回密码 ......................................104
综述 104
【任务4-10】设置密保与找回密码界面 .......105
【任务4-11】设置密保与找回密码界面逻辑代码 ...........................................................108
小结 ..........112
思考题 ......113
第5章 个人资料模块 114
5.1 个人资料 ..........................................................114
综述 114
【任务5-1】个人资料界面 .............................115
【任务5-2】创建UserBean .............................119
【任务5-3】创建用户信息表 .........................119
【任务5-4】DBUtils工具类 ............................120
【任务5-5】个人资料界面逻辑代码 .............122
5.2 个人资料修改 ..................................................127
综述 127
【任务5-6】个人资料修改界面 .....................127
【任务5-7】个人资料修改界面逻辑代码 .....129
小结 ..........136
思考题 ......136
第6章 习题模块 137
6.1 习题 .137
综述 137
【任务6-1】习题界面 .....................................138
【任务6-2】习题界面Item ..............................139
【任务6-3】创建ExercisesBean ......................140
【任务6-4】习题界面Adapter ........................141
【任务6-5】习题界面逻辑代码 .....................143
6.2 习题详情 ..........................................................147
综述 147
【任务6-6】习题详情界面 .............................148
【任务6-7】习题详情界面Item ......................149
【任务6-8】习题数据的存放 .........................151
【任务6-9】习题详情界面Adapter ................154
【任务6-10】习题详情界面逻辑代码 ...........162
小结 ..........169
思考题 ......169
第7章 课程模块 170
7.1 课程列表 ..........................................................170
综述 170
【任务7-1】水平滑动广告栏界面 .................171
【任务7-2】课程界面 .....................................174
【任务7-3】课程界面Item ..............................176
【任务7-4】创建CourseBean ..........................178
【任务7-5】创建AdBannerFragment .............179
【任务7-6】创建AdBannerAdapter ................181
【任务7-7】课程界面Adapter ........................183
【任务7-8】课程界面数据的存放 .................187
【任务7-9】课程界面逻辑代码 .....................188
7.2 课程详情 ..........................................................196
综述 196
【任务7-10】课程详情界面 ...........................196
【任务7-11】课程详情界面Item ....................199
【任务7-12】创建VideoBean .........................200
【任务7-13】课程详情界面Adapter ..............200
【任务7-14】视频列表数据的存放 ...............204
【任务7-15】课程详情界面逻辑代码 ...........205
7.3 视频播放 ..........................................................213
综述 213
【任务7-16】视频播放界面 ...........................213
【任务7-17】视频播放界面逻辑代码 ...........214
7.4 播放记录 ..........................................................217
综述 217
【任务7-18】播放记录界面 ...........................217
【任务7-19】播放记录界面Item ....................218
【任务7-20】播放记录界面Adapter ..............220
【任务7-21】播放记录界面逻辑代码 ...........223
小结 ..........226
思考题 ......226
第8章 项目上线 227
8.1 代码混淆 ..........................................................227
8.1.1 修改build.gradle文件 ...........................227
8.1.2 编写proguard-rules.pro文件 .................228
8.1.3 查看mapping.txt文件 ...........................229
8.2 项目打包 ..........................................................231
8.3 项目加固 ..........................................................233
8.4 项目发布 ..........................................................236
小结 ..........238
思考题 ......238 前言/序言
为什么要学习 Android
Android 是 Google 公司开发的基于 Linux 的开源操作系统,主要应用于智能手机、 平板电脑等移动设备。经过短短几年的发展,Android 系统在全球得到了大规模推广, 除智能手机和平板电脑外,还可用于穿戴设备、智能家居等领域。据不完全统计, Android 系统已经占据了全球智能手机操作系统的 80% 以上,中国市场占有率更是高 达 90% 以上。由于 Android 的迅速发展,导致市场对 Android 开发人才需求猛增,因 此越来越多的人学习 Android 技术,以适应市场需求寻求更广阔的发展空间。
如何使用本书
本书是在《Android 移动开发基础案例教程》的基础上编写的,涵盖 Android 基 础的全部知识,不仅是对 Android 基础的巩固与提高,更是对项目经验的积累。读者 在学习本书之前,最好先学习《Android 移动开发基础案例教程》,配套学习效果更好, 如果是有基础的读者,可以直接动手实践博学谷项目,从零开始完成本项目的开发。
本书共分为 8 章,具体如下:
◎第 1 章针对博学谷项目进行整体介绍,包括项目名称、项目概述、开发环境、 模块说明,以及各个界面的效果展示,对于本章的内容,读者只需了解即可。
◎第 2 章针对博学谷项目的三个功能界面的设计进行讲解,其中包含欢迎界面、 课程界面、习题界面。通过本章的学习,读者可以掌握一些基本的界面设计技巧。
◎第 3 ~ 5 章针对用户模块进行讲解,由于用户模块的功能较多,因此将其分为 三个小模块,其中包括注册与登录模块、“我”的模块、个人资料模块,这三章涉及 的知识点有数据存储、SQLite 数据库等。
◎第 6 章针对习题模块进行讲解,在习题界面中展示章节习题列表,当点击某个 章节时会进入习题详情界面,在该界面中直接做题即可。本章涉及的知识点有 XML 文件解析、ListView 控件、Adapter 数据适配器等。
◎第 7 章针对课程模块进行讲解,在课程模块中同样显示课程列表,当点击 某个章节时会进入课程详情界面,点击相应视频即可播放。本章涉及的知识点有Fragment、ViewPager、自定义控件、多媒体、SQLite、JSON 数据解析等。
◎第 8 章针对项目上线进行讲解,其中包括代码混淆、项目打包、项目加固、项 目发布等。本章学完后,建议读者对整个项目重新梳理,便于提高项目开发经验。
在使用本书的过程中,难免会遇到一些问题,如果是对某个知识点不熟悉,则可以先查阅《Android 移动开发基础案例教程》,理解后再进行项目开发。本项目是一个完整的项目,建议先理清思路,多思考、多分析、多实践,逐步完成项目的开发。
致谢
本书的编写和整理工作由传智播客教育科技股份有限公司完成,主要参与人员有 吕春林、陈欢、张鑫、柴永菲、张泽华、李印东、邱本超、马伟奇、刘松、金兴等,全体人员在近一年的编写过程中付出了很多辛勤的劳动和汗水,在此一并表示衷心的感谢。
意见反馈
尽管我们尽了最大的努力,但教材中难免会有不妥之处,欢迎各界专家和读者朋 友们来函给予宝贵意见,我们将不胜感激。您在阅读本书时,如发现任何问题或有不 认同之处可以通过电子邮件与我们取得联系。
请发送电子邮件至:itcast_book@vip.sina.com。
传智播客?黑马程序员
2017 年 2 月 15 日于北京
《Android应用开发精粹:从入门到精通》 内容概述 本书旨在为广大 Android 开发爱好者、初学者以及寻求技术提升的开发者提供一套全面、系统且实用的学习指南。我们不拘泥于特定框架或版本,而是聚焦于 Android 应用开发的核心原理、关键技术以及最佳实践,引导读者构建出高性能、高可维护性的优质应用。全书内容层层递进,从最基础的开发环境搭建,到复杂的UI交互设计,再到高效的数据管理与网络通信,最后深入到应用性能优化和发布部署,力求让读者掌握从零开始构建一个完整 Android 应用的全过程。 核心亮点 理论与实践深度融合: 本书在讲解每一个技术点时,都力求深入剖析其背后的原理,并辅以大量精心设计的代码示例和易于理解的图示。读者不仅能知其然,更能知其所以然,为日后的独立开发打下坚实基础。 循序渐进的学习路径: 我们将复杂的 Android 开发技术拆解成易于消化的模块,从宏观的开发流程到微观的 API 调用,都经过精心组织和编排,确保读者能够按照逻辑顺序逐步掌握。 聚焦核心竞争力: 本书不追求“大而全”的知识堆砌,而是专注于 Android 应用开发中最常用、最核心、最具价值的技术点,帮助读者快速建立起自身的开发能力,并能在实际工作中得心应手。 关注开发者成长: 除了技术本身,本书还融入了大量关于软件工程、代码规范、调试技巧、性能调优以及项目管理等方面的经验分享,旨在帮助开发者全面提升自身的综合素质。 章节详情 第一篇:Android开发入门与基础 第一章:踏上Android开发之旅 Android生态系统概览: 了解 Android 平台的历史、现状与未来发展趋势,理解其在移动互联网领域的地位。 开发环境搭建: 详细指导读者安装和配置 Android Studio,包括 SDK、AVD(Android Virtual Device)等关键组件的设置,确保开发环境的顺畅运行。 第一个Android应用: 从“Hello, World!”开始,带领读者熟悉 Android 项目的基本结构,理解 Activity、Layout、Manifest 文件等核心概念,完成一个简单的界面展示。 Android项目结构详解: 深入剖析 `src`、`res`、`AndroidManifest.xml` 等目录的作用,理解 Java/Kotlin 代码、资源文件、清单文件之间的相互关系。 构建与运行: 掌握 Gradle 的基本用法,学会如何编译、构建和在模拟器或真机上运行 Android 应用。 第二章:Android UI基础 视图(View)与视图组(ViewGroup): 理解 Android UI 绘制的基本原理,学习 View 和 ViewGroup 的层级关系。 常用UI控件: 详细介绍 TextView, EditText, Button, ImageView, CheckBox, RadioButton, Spinner 等常用控件的属性、用法及事件处理。 布局管理器: 掌握 LinearLayout, RelativeLayout, FrameLayout, ConstraintLayout 等核心布局,理解它们在实现灵活 UI 时的作用与选择。 XML布局与代码布局: 学习如何在 XML 文件中声明 UI 布局,以及如何在 Java/Kotlin 代码中动态创建和管理 UI 元素。 列表与网格: 深入学习 ListView 和 GridView 的使用,理解 Adapter 的概念,为展示大量数据做好准备。 可复用UI组件: 讲解如何通过 Include, ViewStub, Merge 等标签来优化布局,提升代码复用性和性能。 第三章:Activity与Fragment Activity生命周期: 详细解析 Activity 的 onCreate, onStart, onResume, onPause, onStop, onDestroy 等生命周期方法,理解其状态切换过程,是开发中处理屏幕旋转、内存回收等问题的关键。 Intent: 掌握 Intent 的显式调用和隐式调用,学习如何在 Activity 之间传递数据,理解 IntentFilter 的匹配机制。 Activity切换动画: 学习如何为 Activity 之间的跳转添加平滑的过渡动画,提升用户体验。 Fragment基础: 理解 Fragment 的概念及其优势,学习 Fragment 的生命周期,以及 Fragment 和 Activity 之间的通信方式。 Fragment管理: 掌握 FragmentManager 和 FragmentTransaction 的使用,实现 Fragment 的动态添加、移除、替换等操作。 Fragment在不同屏幕尺寸下的应用: 学习如何根据屏幕尺寸适配 Fragment,实现响应式 UI 设计。 第四章:事件处理与交互 点击事件: 学习 OnClickListener 的使用,响应用户点击行为。 长按事件: 掌握 OnLongClickListener,实现长按操作。 触摸事件: 深入理解 MotionEvent,处理复杂的触摸手势,如滑动、拖拽等。 手势识别: 学习 GestureDetector 和 ScaleGestureDetector 的应用,方便地识别和处理各种手势。 输入法处理: 了解如何控制软键盘的弹出与隐藏,优化用户输入体验。 Toast与SnackBar: 学习使用 Toast 和 SnackBar 来向用户提供非侵入式的反馈信息。 第二篇:Android进阶技术 第五章:数据存储 SharedPreferences: 学习使用 SharedPreferences 存储少量键值对数据,适用于存储用户设置、登录状态等。 文件存储: 掌握内部存储和外部存储的区别与应用,学会读写文件。 SQLite数据库: 深入讲解 SQLite 的使用,包括创建数据库、表,执行增删改查操作,以及使用 SQLiteOpenHelper 管理数据库版本。 Room Persistence Library: 学习 Android Jetpack 提供的 Room,作为 SQLite 的抽象层,提供更便捷、安全的数据库操作方式,并支持编译时检查。 ContentProvider: 理解 ContentProvider 的概念,学习如何创建和使用 ContentProvider 来共享应用内的数据。 第六章:后台任务与服务 Thread与Runnable: 复习 Java 线程的基础知识,理解在 Android 中创建和管理线程。 AsyncTask: 学习使用 AsyncTask 来执行后台任务,并在主线程更新 UI,是早期 Android 开发中常用的异步处理方式。 Handler与Looper: 深入理解 Handler, Looper, MessageQueue 的工作机制,实现线程之间的通信和异步消息处理。 Service: 学习 Service 的类型(Started, Bound, Foreground),掌握其生命周期,以及如何在后台执行耗时操作。 WorkManager: 学习 Android Jetpack 提供的 WorkManager,用于处理可延迟、可约束的后台任务,是现代 Android 后台任务处理的首选方案。 BroadcastReceiver: 学习 BroadcastReceiver 的应用,用于接收和响应系统广播及自定义广播。 第七章:网络通信 HTTP协议基础: 简要回顾 HTTP 协议的工作原理。 HttpClient与HttpURLConnection: 了解 Android 原生的网络请求方式。 OkHttp: 重点学习 OkHttp 库,作为目前最流行的 Android 网络请求库,掌握其同步和异步请求,请求拦截器,连接池等高级特性。 Retrofit: 学习使用 Retrofit,将 HTTP API 封装成 Java/Kotlin 接口,进一步简化网络请求的代码。 JSON解析: 学习使用 Gson 或 Jackson 等库解析 JSON 数据。 图片加载库: 介绍 Glide 和 Picasso 等高效的图片加载库,解决图片加载的性能和缓存问题。 第八章:高级UI与动画 自定义View: 学习如何创建自定义 View,实现个性化的 UI 组件,掌握 onMeasure, onLayout, onDraw 方法。 Canvas绘图: 深入学习 Canvas 的绘图API,实现各种图形的绘制。 属性动画(Property Animation): 掌握 ObjectAnimator, ValueAnimator 等,实现View属性的平滑过渡,创建各种炫酷的动画效果。 View动画(Tween Animation): 了解 Alpha, Scale, Translate, Rotate 等 View 动画。 动画框架: 学习如何组织和管理复杂的动画序列。 CoordinatorLayout与Behavior: 学习使用 CoordinatorLayout 来协调各种子 View 的行为,实现更复杂的交互式 UI,如 FloatingActionButton 的收缩、AppBar 的联动等。 第三篇:应用质量与发布 第九章:性能优化 内存优化: 分析内存泄漏的原因,学习使用 LeakCanary 等工具检测和修复内存泄漏。 UI性能优化: 优化布局层级,避免过度绘制,使用 ConstraintLayout 等高效布局。 网络性能优化: 减少请求次数,优化数据传输,使用缓存策略。 耗电优化: 合理使用后台任务,避免频繁唤醒设备。 卡顿优化: 理解 ANR(Application Not Responding)的原因,优化主线程操作。 代码优化: 学习算法优化,避免不必要的对象创建。 第十章:应用测试与调试 单元测试: 学习 JUnit 和 Mockito,编写单元测试来验证代码逻辑。 UI测试: 掌握 Espresso,进行 UI 集成测试,验证界面交互。 调试技巧: 熟练使用 Android Studio 的 Debugger,断点,变量监视,日志打印等功能。 性能分析工具: 学习使用 Android Profiler 来分析 CPU、内存、网络、能量消耗。 第十一章:应用架构模式 MVC, MVP, MVVM 模式: 深入理解常见的 Android 应用架构模式,学习它们的设计思想和优缺点。 Android Jetpack 组件: 学习 ViewModel, LiveData, Room, Navigation 等 Jetpack 组件,它们能帮助开发者构建更健壮、可测试、易维护的应用。 模块化开发: 探讨如何将大型项目拆分成多个模块,提高开发效率和代码可维护性。 第十二章:打包、发布与安全 签名与发布: 学习如何生成签名密钥,进行 APK/App Bundle 的打包,并上传到 Google Play Store。 应用混淆与加固: 了解 ProGuard/R8 的使用,以及常见的应用加固技术。 权限管理: 学习 Android 的权限模型,动态权限的申请与处理。 用户隐私保护: 关注 Android manifest 中敏感权限的声明与使用。 学习建议 本书内容丰富,涵盖了 Android 开发的各个方面。建议读者在阅读过程中,勤于动手,将书中的代码示例亲自敲一遍,并尝试进行修改和扩展。遇到不理解的地方,不要急于跳过,可以结合 Android 官方文档和相关技术博客进行深入学习。鼓励读者在掌握基础知识后,尝试构建自己的小型项目,将所学知识融会贯通,逐步提升自身的开发能力。 目标读者 对 Android 开发充满热情,希望系统学习 Android 应用开发的初学者。 已有其他编程语言基础,希望快速转入 Android 开发领域的开发者。 希望巩固和深化 Android 开发技能,提升代码质量和开发效率的中级开发者。 对 Android 平台新技术和最佳实践感兴趣的资深开发者。 本书旨在成为您 Android 开发之路上一位值得信赖的伙伴,伴您从零开始,一步步走向精通。
这本书的封面设计非常有科技感,那种流线型的图形和明亮的色彩搭配,瞬间就能抓住眼球。我是一名对Android开发充满热情,但缺乏系统项目经验的学生。市面上很多教程都太过于理论化,或者代码示例太简单,难以应对真实的开发需求。这本书的“实战”二字,正是我所需要的。我非常期待书中关于网络通信和数据同步的内容。在实际项目中,与服务器进行数据交互是必不可少的,而且数据的实时性和一致性也至关重要。我希望书中能够详细讲解如何使用Retrofit等库进行高效、可靠的网络请求,包括参数的构建、数据的解析、错误处理以及异常捕获。更重要的是,我希望书中能够深入探讨数据同步的策略,比如如何实现数据的离线存储和在线同步,如何处理网络中断和数据冲突,以及如何保证数据的一致性。我期待书中能够提供一个完整的示例,展示如何构建一个支持离线工作的应用,并且能够在网络恢复后自动同步数据。同时,我也对一些消息推送和实时通信技术(如WebSocket)很感兴趣,希望书中能够有所介绍,并给出相应的实现方案。如果书中还能涉及到一些关于API安全性的问题,比如如何进行数据加密和身份验证,那就更让我满意了。我希望通过这本书,能够真正掌握Android应用中的数据交互和同步技术,开发出能够应对复杂网络环境的强大应用。