课程试听
                
        第一章 Android基础阶段
            1-1 web基础之html入门
            
        
        - html的简介之什么是html
 - html的简介之操作思想
 - 字体标签和注释标签
 - 列表标签
 - 图形标签
 - 超链接标签
 - 表单标签(上)
 - 表单标签(中)
 - 表单标签(下)
 - 其他标签
 - 表格标签(上)
 - 表格标签(下)
 - 注册案例(上)
 - 注册案例(下)
 
            1-2 web基础之css入门
            
        
        - css的简介
 - css和html的结合方式
 - css的选择器(上)
 - css的选择器(中)
 - css的选择器(下)
 
            1-3 web基础之JavaScript入门
            
        
        - js的简介
 - js与html的结合方式
 - js的原始类型和变量声明
 - js的引用类型和类型转换
 - js的语句
 - 练习99乘法表
 - js的运算符
 - js的数组
 - js的String对象(上)
 - js的String对象(下)
 - js的Array对象(上)
 - js的Array对象(下)
 - js的Math对象
 - js的Date对象
 - js的RegExp对象
 - js的bom对象(上)
 - js的bom对象(下)
 - js的全局变量和局部变量
 - js的全局函数
 - js的函数的创建与使用(上)
 - js的函数的创建与使用(下)
 
            1-4 web基础之JavaScript高级
            
        
        - js的事件的简介
 - js的常用事件(上)
 - js的常用事件(下)
 - dom简介(上)
 - dom简介(下)
 - document对象(上)
 - document对象(下)
 - innerHTML属性
 - 练习-动态生成表格
 - 表单的提交方式
 - 表单的校验
 - json的简介
 - js解析json
 - json练习
 
            1-5 web基础之mysql数据库入门
            
        
        - 数据库的简介
 - mysql的安装和卸载
 - mysql的存储结构
 - sql的简介
 - 使用sql对数据库的操作
 - 使用sql对表进行操作
 - 使用sql对表中的记录进行操作(上)
 - 使用sql对表中的记录进行操作(中)
 - 使用sql对表中记录进行操作(下)
 - 使用order by对表中记录进行排序
 - 聚集函数(上)
 - 聚集函数(下)
 - 分组操作
 - mysql可视化工具的使用
 - limit关键字
 - 重置mysql的root密码
 
            1-6 web基础之JDBC入门
            
        
        - JDBC简介
 - JDBC入门案例
 - JDBC的DriverManager对象
 - JDBC的Connection对象和Statement对象
 - JDBC的ResultSet对象
 - JDBC释放资源
 - 使用jdbc实现crud操作(上)
 - 使用jdbc实现crud操作(下)
 - jdbc工具类的封装(上)
 - jdbc工具类的封装(中)
 - jdbc工具类的封装(下)
 - 使用jdbc工具类实现crud操作(上)
 - 使用jdbc工具类实现crud操作(下)
 - 登录操作
 - sql注入的演示
 - 使用预编译对象防止sql注入
 - 使用预编译对象实现查询和增加操作
 - 使用预编译对象实现修改和删除操作
 
            1-7 web基础之xml入门
            
        
        - xml的简介
 - xml的文档声明和元素定义
 - xml属性定义、注释和CDATA
 - xml解析简介和dom解析
 - sax解析xml
 - pull解析的简介
 - pull解析xml操作
 - pull序列化操作
 
            1-8 web基础之tomcat入门
            
        
        - web相关概念的介绍
 - web服务器介绍
 - tomcat的安装和目录结构(上)
 - tomcat的安装和目录结构(中)
 - tomcat的安装和目录结构(下)
 - 发布项目到tomcat(上)
 - 发布项目到tomcat(下)
 - myeclipse整合tomcat
 
            1-9 web基础之http协议入门
            
        
        - http协议简介
 - 使用抓包工具查看http协议
 
            1-10 web基础之servlet入门
            
        
        - servlet的入门
 - servlet的执行过程
 - servlet的生命周期
 - servlet开发的细节问题(上)
 - servlet开发的细节问题(下)
 - url-pattern的配置
 - 开发中的路径问题(上)
 - 开发中的路径问题(下)
 - 重定向和转发
 - ServletConfig对象(上)
 - ServletConfig对象(下)
 - ServletContext对象(上)
 - ServletContext对象(下)
 - 练习 统计网站访问次数
 - 使用servletContext对象读取web项目中资源(一)
 - 使用servletContext对象读取web项目中资源(二)
 - 使用servletContext对象读取web项目中资源(三)
 - 使用servletContext对象读取web项目中资源(四)
 - 使用类加载器读取文件
 - 默认servlet
 
            1-11 web基础之Request和Response入门
            
        
        - response的简介
 - 重定向的案例分析
 - 重定向的案例代码实现
 - 定时跳转的案例
 - 定时跳转的案例倒计时
 - 设置响应体
 - 验证码实现步骤的分析
 - 代码实现验证码
 - 刷新验证码
 - 文件下载案例
 - request获取请求数据和客户机信息
 - request获取表单提交数据(上)
 - request获取表单提交数据(下)
 - request获取表单提交中文数据
 - request域对象简介
 - 重定向和转发的区别
 - 转发案例分析
 - 转发案例代码实现
 - response的流的注意事项
 
            1-12 Android开发入门体验
            
        
        - 通讯制式
 - Android的现状
 - Android的发展和平台数据
 - Android的体系结构
 - 虚拟机的比较
 - art模式
 - android开发工具的获取
 - 开发环境的目录结构
 - helloworld工程&部署到模拟器
 - adb常见指令
 - 环境变量的配置
 - ddms简介
 - android工程的目录结构
 - 电话拨号器
 - 应用程序的权限
 - 应用程序开发的流程
 - 线性布局入门
 - 线性布局综合案例
 - 相对布局的使用
 - 帧布局
 - 表格布局和绝对布局
 - 常见单位
 - 小案例-qq大盗
 - 点击事件的四种写法
 
            1-13 Android开发测试和打印日志
            
        
        - 测试相关的概念
 - Android下的junit测试
 - logcat使用
 
            1-14 Android开发文件操作
            
        
        - qq登陆的ui界面
 - Android下的文件存储
 - 方便api获取文件目录
 - sd卡操作
 - 文件的权限
 - 文件的权限-创建公有的文件
 - 文件访问权限
 - sharedpreference保存数据
 - 利用sp开发一个设置功能
 
            1-15 Android开发xml操作
            
        
        - 利用stringbuilder生成xml文件
 - Stringbuilder生成xml文件注意的问题
 - 采用xml序列化器生成xml文件
 - xml文件的解析
 - 采用调试的方式观察pull解析的流程
 
            1-16 Sqlite数据库
            
        
        - Android下如何创建数据库
 - 创建数据库的表结构
 - 数据库的升级更新
 - 数据库增删改查的sql语句
 - 数据库的增删改查的实现
 - 对增删改查的方法进行单元测试
 - 采用命令行查看sqlite数据库的内容
 
            1-17 使用ListView实现列表
            
        
        - 学生管理系统界面的显示
 - listview引入
 - listview的使用
 - 学生管理系统的升级
 - listview的优化的原理
 - listview的优化
 - 采用打气筒创建view对象
 - 通知数据适配器刷新数据
 
            1-18 对话框
            
        
        - 常见对话框
 - 删除学生信息的对话框
 - 数据库的另外一种增删改查的方法
 - 数据库的事务
 - 常见数据适配器-simple和arrayAdapter
 
            1-19 动画效果
            
        
        - android下的图形动画
 
            1-20 样式和主题
            
        
        - 应用程序的国际化
 - 样式和主题
 
            1-21 联网操作
            
        
        - 网络图片查看器
 - http请求的小细节
 - ANR产生的原因
 - 主线程模型
 - android下的消息机制
 - 网络图片查看器的完成
 - 网页源码查看器
 - useragent的使用
 - 中文乱码问题的处理
 - 访问网络获取手机归属地
 - 天气预报案例-json数据的解析
 - 新闻客户端的需求和服务器搭建
 - 连接服务器解析数据
 - 数据的界面展现&正在加载的进度
 - 新闻文本界面的展现
 - 利用开源框架加载显示图片
 - smartimageview的原理
 - smartimageview异常的处理
 
            1-22 Http请求
            
        
        - get方式提交数据-服务器搭建
 - 采用get的方式提交数据到服务器
 - POST请求和GET请求的区别
 - POST方式提交数据到服务器
 - 中文乱码问题的处理
 - 中文乱码的补充-锟斤拷锟斤初体验
 - 提交数据的中文问题
 - 采用httpclient提交数据到服务器
 - 采用开源框架get的方式提交数据到服务器
 - 采用开源项目post数据到服务器
 - 上传文件到服务器
 - 为什么多线程可以提高下载速度
 - 多线程下载的步骤
 - 如何划分服务器的资源给不同的线程
 - 多线程文件下载的实现
 - 多线程断点下载的完成
 - 多线程断点下载的小细节
 - 多线程断点下载的移植
 - 开源项目实现多线程断点下载
 
            1-23 Activity入门
            
        
        - 多界面应用程序的开发
 - 人品计算器ui搭建
 - 人品计算器的完成
 - Activity的数据传递
 - 隐式意图和显式意图
 - 显式意图和隐式意图的特点
 - 隐式意图的详细参数
 - 利用隐式意图打开系统的浏览器
 - 利用隐式意图激活短信发送的应用
 - 短信助手的ui
 - 开启新的界面获取返回值
 - 请求码和结果码
 - Activity的生命周期-创建和销毁
 - Activity生命周期-显示与隐藏
 - Activity生命周期-暂停和继续
 - Activity生命周期的总结
 - 横竖屏切换的生命周期
 - Activity的任务栈
 - singletop的启动模式
 - singletask的启动模式
 - singleinstance启动模式
 
            1-24 广播
            
        
        - sd卡状态监听
 - 开机启动的广播接收者
 - 外拨电话的广播接收者
 - 软件的安装和卸载
 - 短信窃听器
 - 不同版本系统广播接收者的特点
 - 自定义广播消息和广播接收者
 - 自定义有序广播
 - 有序广播的特点
 - 系统的一些广播接收者的类型
 - 只能用代码注册的广播事件
 
            1-25 服务
            
        
        - 需求_调用服务的方法
 - 绑定服务调用服务方法的原理
 - 服务内部代码的编写
 - 绑定服务调用服务方法
 - 绑定服务调用方法的回顾
 - 通过接口隐藏代码内部实现的细节
 - 绑定服务的生命周期
 - 混合调用服务的生命周期
 - 本地服务和远程服务
 - aidl的编写步骤
 - 绑定远程服务的应用场景
 - 支付宝安全支付案例
 - 系统服务
 - 利用系统服务监听通话的状态
 - 通话录音
 - 服务概念入门
 - 服务简单入门
 - 进程的优先级
 - 为什么需要使用服务
 - 服务的生命周期
 - 简易音乐播放器
 
            1-26 内容观察者
            
        
        - 内容提供者的概念
 - 内容提供者的工作方式
 - 内容提供者的匹配规则
 - 内容提供者的业务实现
 - 学习内容提供者的目的
 - 利用内容提供者添加删除用户的短信数据
 - 小知识点-通知栏的提醒
 - 装B神器
 - 联系人数据库的表结构
 - 利用内容提供者读取联系人
 - 联系人内容提供者的工具类
 - 删除联系人的细节
 - 添加数据到联系人数据库
 - 内容观察者
 - 利用内容观察者观察短信数据库的变化
 - 练习_利用内容提供者开发短信的备份和还原
 
            1-27 多媒体
            
        
        - 计算机图形的表示方法
 - 加载图片到内存_x
 - 加载大图片到内存
 - 图片的缩放
 - 图片的平移旋转镜面和倒影效果
 - 随手涂鸦的ui
 - 随手涂鸦的核心逻辑
 - 随手涂鸦的细节
 - 撕衣服
 - getX和getRawX区别
 - 图片的颜色处理
 - 音乐播放器的状态图
 - 异步播放网络上的音乐文件
 - soundpool
 - 视频播放器
 - SurfaceView子线程更新ui
 - surfaceview生命周期的回调
 - 采用surfaceview播放视频
 - 照相机拍照
 - 视频的录制
 
            1-28 传感器
            
        
        - 传感器的使用
 - 指南针
 
            1-29 Fragment
            
        
        - fragment简介
 - fragment入门
 - fragment的事务
 - fragment与Activity的通讯
 - fragment的生命周期
 - fragment的向下兼容
 
            1-30 属性动画
            
        
        - view动画
 - 组合动画
 - xml文件定义动画
 - view动画的细节
 - 属性动画
 - 属性动画demo合集
 - xml定义属性动画
 
            1-31 反编译
            
        
        - 应用程序反编译
 
            1-32 Android Studio
            
        
        - Android Studio的简介
 - Android Studio开发环境搭建
 - Android Studio欢迎界面
 - HelloWorld应用程序的创建
 - 创建模拟器、部署HelloWorld应用程序
 - Android Studio组成结构介绍
 - Android Studio菜单栏的介绍
 - Android Studio 快速工具栏
 - Android Studio Project项目结构视图
 - Android Studio Structure结构视图
 - Android Studio的编辑区域
 - Android Studio底部视图
 - Gradle相关文件的介绍
 - 项目其他文件目录的介绍
 - 设置文件的编码
 - 主题的设置
 - 编辑区域字体的设置
 - 行号和方法分割线的显示
 - Logcat日志输入颜色的修改
 - 窗体快捷键
 - 常用的编辑快捷键
 - 模糊匹配、文档提示
 - 活动模板
 - 后缀补全
 - module的创建和删除
 - 库的引入
 - 插件的安装
 - 导入eclipse和as项目
 - Junit单元测试
 - debug调试
 
            1-33 5.0 新特性
            
        
        - 01_Matrial Design简介
 - 02_Matrial Desing主题的使用
 - 03_主题编辑器的使用
 - 04_更换主题
 - 05_阴影大小的指定
 - 06_z轴的概念
 - 07_设置产生阴影的提供者
 - 08_代码设置阴影轮廓
 - 09_指定阴影进行剪裁
 - 10_tint染色完成选择器
 - 11_通过Palette提取图片的颜色
 - 12_矢量图像
 - 13_5.0默认的背景点击动画
 - 14_自定义圆形缩小动画
 - 15_轨迹动画
 - 16_状态动画
 - 17_动画选择器
 - 18_矢量图动画
 - 19_转场动画
 - 20_RecyclerView的使用
 - 21_RecyclerView不同风格的展现、条目点击事件
 - 22_RecyclerView瀑布流
 - 23_CardView的使用
 - 24_SwipeRefreshLayout的使用
 - 25_ToolBar基本的使用
 - 26_自定义Toolbar
 - 27_DrawerLayout的使用
 - 28_DrawerLayout和Toolbar联合使用
 - 29_ofo App主界面的实现
 
            1-34 6.0 新特性
            
        
        - 06_协调者布局、AppBarLayout、行为的基本使用
 - 07_layout_scrollFlags属性的扩展
 - 08_RecyclerView产生滑动行为
 - 09_NestedScrollView产生行为
 - 10_enterAlwaysCollapsed和exitUntilCollapsed的含义
 - 11_沉浸式状态栏
 - 12_CollapsingToolbarLayout的使用
 - 13_支付宝滚动头
 - 14_FloatingActionBar和SnackBar的使用
 - 15_FloatingActionButton和CoordinatorLayout的配合使用
 - 16_TextInputLayout和TextInputEditText的使用
 - 17_自定义文本的选中模式
 - 18_动态的权限申请
 - 01_Android6.0新特性的介绍
 - 02_NavigationView控件的使用
 - 03_Navigation和Toolbar的使用
 - 04_TabLayout的使用
 - 05_行为原理分析
 
第二章 项目初级阶段
            2-1 安全卫士-项目分包&Splash界面
            
        
        - 手机卫士学习目标
 - SVN版本控制
 - 代码的组织方式
 - splash界面_UI布局实现
 - splash界面_版本更新业务分析
 - splash界面_获取网络版本信息
 - splash版本更新-版本比对不更新
 - splash版本更新-提醒用户更新
 - splah版本更新-下载apk的实现
 - splash版本更新-安装apk的实现
 - splash版本更新-网络错误的提示
 
            2-2 安全卫士-Home界面&设置中心界面&手机防盗业务流程分析
            
        
        - Home页面_上部分布局的实现
 - Home页面_Logo动画的实现
 - Home页面_走马灯的实现
 - Home页面_设置按钮的shape和selector
 - 9patch图片的制作和使用
 - Home页面_GridView的实现
 - 设置中心布局的实现
 - 组合式自定义控件和自定义属性
 - SettingItemView其他自定义属性的实现
 - 设置中心自动更新的实现
 - 手机防盗-业务流程分析
 
            2-3 安全卫士-密码输入框&向导界面
            
        
        - 手机防盗-密码输入框显示
 - 手机防盗-密码设置框逻辑的实现
 - 手机防盗-设置向导第一个布局的实现
 - 手机防盗-设置向导其他布局的实现
 - 手机防盗-向导界面动画的切换
 - 手机防盗-向导界面的抽取
 - 手机防盗-手势识别器的使用
 - 手机防盗-手势识别首个页面bug的修复
 - 手机防盗_sim卡绑定
 - 手机防盗_设置安全号码
 - 手机防盗_选择联系人页面的创建
 - 手机防盗_系统联系人数据集获得
 - 手机防盗_系统联系人图像获得
 - 手机防盗_回显联系人号码
 - ListView的Adapter优化
 - 手机防盗-密码输入框逻辑的实现
 
            2-4 安全卫士-手机防盗&设置界面
            
        
        - 手机防盗_设置完成界面的实现
 - 手机防盗_防盗页面的布局的实现
 - 手机防盗_防盗页面逻辑实现
 - 手机防盗_开机重启判断手机丢失的逻辑
 - 手机防盗_指令接收的逻辑实现
 - 手机防盗_报警音乐的播放实现
 - 手机防盗_手机定位原理介绍
 - 手机防盗_GPS经纬度的获得
 - 手机防盗_火星坐标的介绍
 - 手机防盗_GPS位置追踪实现
 - 手机防盗_设备管理员一键锁屏实现
 - 手机防盗_一键锁屏激活操作
 - 手机防盗一键锁屏卸载操作的实现
 - 手机防盗_设备管理员向导界面实现
 
            2-5 安全卫士-远程锁屏和擦除&骚扰拦截
            
        
        - 手机防盗_远程锁屏和擦除数据
 - 骚扰拦截_黑名单数据库建表
 - 骚扰拦截_黑名单数据库Dao的创建
 - 骚扰拦截_dao测试用例
 - 骚扰拦截_功能分析
 - 骚扰拦截_页面布局的实现
 - 骚扰拦截_自定义编辑框状态选择器
 - 骚扰拦截_黑名单列表显示
 - 骚扰拦截_黑名单添加的实现
 - 骚扰拦截_黑名单更新的实现
 - 骚扰拦截_黑名单删除的实现
 - 骚扰拦截_加载进度的实现
 - 骚扰拦截_空View的显示
 - 骚扰拦截_分页查询SQL的实现
 - 骚扰拦截_下拉加载更多的实现
 - 骚扰拦截_拦截服务状态的显示
 - 骚扰拦截_短信拦截功能的实现
 - 骚扰拦截_电话拦截状态时机的实现
 - 骚扰拦截_电话拦截AIDL文件的获得
 - 骚扰拦截_电话挂断的逻辑实现
 - 骚扰拦截_通话记录删除的逻辑实现
 
            2-6 安全卫士-号码归属地查询
            
        
        - 常用工具_归属地UI实现
 - 常用工具_归属地_ApiDemo源码使用
 - 常用工具_手机归属地查询实现
 - 常用工具_其他类型号码归属地查询实现
 - 常用工具_号码动态查询
 - 优化_GZip压缩的使用
 
            2-7 安全卫士-常用号码&来电和去电归属地显示&自定义Toast
            
        
        - 常用号码_ExpandableListView介绍
 - 常用号码_ExpandableListView的Adapter实现
 - 常用号码_真实数据查询的实现
 - 常用号码_Expandablelistview的点击实现
 - 拨入拨出_归属地服务的新建
 - 拨入拨出_归属地信息获取的逻辑
 - Toast源码查看
 - 自定义toast的实现
 - 自定义toast拖动的实现
 
            2-8 安全卫士-自定义Dialog
            
        
        - 拨入拨出_归属地自定义dialog的新建
 - 拨入拨出_dialog自定义样式的实现
 - 拨入拨出_dialog_Adapter的实现
 - 拨入拨出_点击的实现
 
            2-9 安全卫士-软件管家应用列表&PopupWindow
            
        
        - 软件管家_页面布局的实现
 - 软件管家_progressStateView样式和方法的提供
 - 软件管家_内部存储和sd存储信息的获得
 - 软件管家_Adapter的实现
 - 软件管家_应用程序数据的获得
 - 软件管家_应用程序flags的含义和获取比对
 - 软件管家_应用程序排序显示
 - 软件管家_ListView条目头的添加
 - 软件管家_PopupWindow的使用
 - 软件管家_PopupWindow布局和动画实现
 - 软件管家_应用卸载功能的实现
 - 软件管家_应用打开和详情查询的实现
 - 软件管家_shareSDK分享实现
 - 软件管家_include标签的使用
 
            2-10 安全卫士-进程管理&Widget
            
        
        - 进程管理_页面布局实现
 - 进程管理_进程数的统计
 - 进程管理_内存数据的获取
 - 进程管理_Adapter简单实现
 - 进程管理_数据封装和假数据的展示
 - 进程管理_真实数据的获取
 - 进程管理_数据排序和ui微调
 - 进程管理_自定义Toast实现字母显示
 - 进程管理_条目全选反选的实现
 - 进程管理_杀死进程的实现
 - 进程管理_其他UI细节的实现
 - 进程管理_锁屏自动清理内存的实现
 - 进程管理_不被杀死的前台服务
 - Widget_窗口小部件显示实现的步骤
 - Widget_窗口小部件的生命周期
 - 反编译工具的介绍
 - 反编译_获得资源文件
 - Widget_小部件UI时时更新的实现
 - Widget_一键清理IntentService实现方案
 - Widget_时时更新UI的优化
 - 异步任务_介绍
 - 异步任务_AsyncTask的详细使用
 - 异步任务_AsyncTask并发执行多任务
 
            2-11 安全卫士-流量统计&短信备份还原&手势识别
            
        
        - 流量统计_页面布UI实现
 - 流量统计_假数据的显示
 - 流量统计_流量数据的获得
 - 短信备份还原_读取系统短信
 - 短信备份还原_存储系统短信
 - 短信备份还原_接口抽取实现备份
 - 短信备份还原_短信还原的实现
 - 手势识别_代码查询和获得
 - 手势识别_Api使用和修改
 - 手势识别_绘制监听
 
            2-12 安全卫士-程序锁
            
        
        - 程序锁_密码界面布局和分析
 - 程序锁_Activity分流UI显示到Fragment
 - 程序锁_密码设置fragment的创建
 - 程序锁_密码向导跳转密码设置
 - 程序锁_密码设置和密码确认布局跳转
 - 程序锁_密码设置间动画的切换
 - 程序锁_回退栈的监听
 - 程序锁_密码设置业务逻辑的实现
 - 程序锁_页面跳转的实现
 - 程序锁_自定义分段控件布局实现
 - 程序锁_分段控件接口声明实现
 - 程序锁_程序锁页面Adpater的创建
 - 程序锁_程序锁页面假数据显示和加载
 - 程序锁_程序锁数据库创建
 - 程序锁_程序锁加锁解锁的实现
 - 程序锁_程序锁加锁解锁动画的实现
 - AccessibilityService的介绍和使用
 - 程序锁_程序锁AccesibilityService添加
 - 程序锁_拦截页面显示处理
 - 程序锁_拦截页面逻辑跳转的实现
 - 程序锁_其他细节实现
 
            2-13 安全卫士-缓存清理
            
        
        - 缓存清理_页面布局实现
 - 缓存清理_Adapter的实现
 - 缓存清理_ListView滚动扫描的实现
 - 缓存清理_顶部扫描更新UI部分的切换实现
 - 缓存清理_扫描线的动画和重新扫描的实现
 - Settings源码解析获得应用程序的缓存大小
 - 缓存清理_缓存清理数据的获得和展示
 - 缓存清理_清理功能的实现
 - 缓存清理_bug的fix
 
            2-14 安全卫士-手机杀毒&项目辅助知识点
            
        
        - 手机杀毒_手机杀毒页面的创建
 - 手机杀毒_获取真实数据的实现
 - 手机杀毒_病毒数据判断实现
 - 手机杀毒_自定义病毒程序校验
 - 手机杀毒_顶部扫描逻辑的实现
 - 手机杀毒_CircleProgress开源项目的使用
 - 手机杀毒_扫描结束是打开动画的实现
 - 手机杀毒_扫描左右图像的获得
 - 手机杀毒_收尾
 - 快捷图标的创建
 - 自定义的Logger日志
 - 上线应用程序异常的捕获原理&ACRA
 - ACRA的toast和dialog配置
 - Proguard代码混淆
 - AndResGurad资源混淆
 
            2-15 自定义控件-自定义控件基础绘制和布局处理
            
        
        - 01_自定义控件概述
 - 02_自定义的继承关系和构造方法处理
 - 03_利用canva绘制基本图形
 - 04_利用path绘制机器耳朵(三条边的矩形)
 - 05_利用path绘制人形耳朵(贝塞尔曲线)
 - 06_canvas的平移,旋转和缩放
 - 07_绘制文本
 
            2-16 自定义控件-圆形菜单&饼状图点击
            
        
        - 08_饼状图分析
 - 09_饼状图的数据处理
 - 10_扇形的外接矩形的处理
 - 11_扇形的绘制处理
 - 12_直线的绘制
 - 13_文本的绘制
 - 01_自定义ViewGroup的onLayout方法介绍
 - 02_自定义ViewGroup稍复杂小demo
 - 03_圆形菜单的准备工作
 - 04_圆形菜单子视图的摆放
 - 05_onMeasure的MeasureSpec参数讲解
 - 06_圆形菜单的外部测量处理
 - 07_圆形菜单的子视图测量处理
 - 08_饼状图-将点击位置转化为索引值
 - 09_饼状图-点击效果的处理
 - 10_圆形菜单的旋转
 
            2-17 自定义控件-QQ气泡效果分析
            
        
        - 01_QQ气泡效果分析
 - 02_QQ气泡效果-两个静态圆的绘制
 - 03_QQ气泡效果-中间图形的绘制
 - 04_QQ气泡效果-中间图形适配到两个静态圆上
 - 05_QQ气泡效果-拖动效果实现
 - 06_QQ气泡效果-随着拖拽距离固定圆半径的变化
 - 07_QQ气泡效果-超出最大拖拽范围的处理
 - 08_QQ气泡效果-move和up均超出最大范围的处理
 - 09_QQ气泡效果-move超出并且up未超出,move和up均未超出最大范围的处理
 - 10_QQ气泡效果-RecyclerView的列表实现
 - 22_QQ气泡效果-解决RecyclerView带来的事件冲突问题
 - 23_QQ气泡效果-GooView的消失和重置处理
 - 24_QQ气泡效果-多次点击造成的bug
 - 13_QQ气泡效果-事件分发基础
 - 14_QQ气泡效果-事件分发的形象案例引入
 - 15_QQ气泡效果-事件分发原理-孔融家的传统
 - 16_QQ气泡效果-事件分发原理-情况1讲解
 - 17_QQ气泡效果-事件分发原理-情况2讲解
 - 18_QQ气泡效果-事件分发原理-情况3讲解
 - 19_QQ气泡效果-事件分发原理-情况4讲解
 - 20_QQ气泡效果-事件分发原理-情况5讲解
 - 21_QQ气泡效果-事件分发原理-总结
 - 11_QQ气泡效果-准备工作1绘制文本
 - 12_QQ气泡效果-准备工作2修改GooView的位置
 - 13_QQ气泡效果-为TextView设置触摸监听
 - 14_QQ气泡效果-利用WindowManager添加GooView
 - 15_QQ气泡效果-修复GooView的文本和位置
 
            2-18 自定义控件-下拉刷新效果
            
        
        - 01_下拉刷新介绍
 - 02_下拉刷新-划分区域
 - 03_下拉刷新-添加自定义头部视图并隐藏
 - 04_下拉刷新-头部管理器的处理
 - 05_下拉刷新-定义边界
 - 06_下拉刷新-将头部拉出
 - 07_下拉刷新-定义状态提高效率
 - 08_下拉刷新-文字和箭头随状态改变
 - 09_下拉刷新-抬起手后隐藏头部
 - 10_下拉刷新-抬起手后从释放刷新进入刷新中状态
 - 11_下拉刷新-从刷新中还原到初始状态
 - 12_下拉刷新-加入RecyclerView之后的事件处理(难点)
 - 13_下拉刷新-内容视图变为其他视图后的处理
 - 14_下拉刷新-SelfHeaderViewManager的基类抽取
 - 15_下拉刷新-MeiTuan的SelfHeaderViewManger基本实现
 - 16_下拉刷新-缩放和收尾的处理
 - 17_作业-实现方式1
 - 18_作业-实现方式2
 - 19_作业-实现方式3
 - 20_课外学习推荐
 
            2-19 智慧北京-主界面架构&事件传递&主框架
            
        
        - 01-App主界面的架构组成
 - 02-底部Tab的实现
 - 03-ViewPager、Fragment、FragmentPagerAdapter整合
 - 04-给RaidoGroup设置选择改变监听、切换ViewPager的页面
 - 05-ViewPager页面滑动修改对应的tab选择
 - 06-SlidingMenu的引入
 - 07-面向对象概念加强
 - 08-抽象类的抽取
 - 09-接口的抽取
 - 09-解耦合
 - 10-事件传递核心方法的讲解
 - 11-事件传递案例模型设计
 - 12-事件传递简单认识
 - 13-事件的分类
 - 14-事件传递的原则
 - 15-MyView处理事件
 - 16-MyViewGroup拦截事件、处理事件
 - 17-事件拦截的代码应该写在哪里?
 - 18-子控件请求父控件不要拦截事件
 - 19-事件传递源码查看
 - 20-默认事件传递的整个过程细节
 - 21-禁用主界面ViewPager的滑动事件
 - 22-ButterKnift8的使用
 - 23-Picasso显示网络图片
 - 24-OkHttpUtils联网获取数据
 - 25-HiJson工具查看json字符串
 - 26-根据Json字符串的格式设计模型类
 - 27-把json字符串转化成对应的模型对象
 - 28-TabPagerIndicator的使用
 
            2-20 智慧北京-开发流程&Splash界面&主界面
            
        
        - 01-软件公司的组成架构
 - 02-软件开发的流程
 - 03-开发文档
 - 04-开发模式
 - 05-智慧北京项目的演示
 - 06-项目准备
 - 07-项目基本框架的搭建
 - 08-git仓库的创建
 - 09-开发用户的添加
 - 10-提交框架代码到仓库
 - 11-Splash界面动画
 - 12-延时2s进入向导界面
 - 13-向导界面的ViewPager
 - 14-开始体验按钮
 - 15-创建红色和灰色的小圆点
 - 16-小红点的移动
 - 17-通过首选项记录是否体验过向导、进入主界面
 - 18-底部tab的实现
 - 19-ViewPager_Fragment_FragmentViewPager的实现
 - 20-点击底部的tab切换ViewPager的页面
 - 21-侧滑菜单的引入
 - 22-禁用ViewPager左右滑动
 - 23-BaseFragment布局的抽取
 - 24-BaseFragment标题处理的抽取
 - 25-BaseFragment内容的抽取
 - 26-联网获取数据接口抽取
 - 27-点击menu完成侧滑菜单的切换
 - 28-不同的Tab页面控制侧滑菜单是否可以滑出
 - 29-加载数据的入口
 - 30-从服务器上获取新闻中心页的数据
 - 31-把新闻中心的json转换成对应的模型对象
 - 32-把数据传递给MainActivity的侧滑菜单
 
            2-21 智慧北京-新闻中心页面
            
        
        - 01-RecyclerView的介绍和基本使用
 - 02-RecyclerView不同风格的展现、条目点击事件
 - 03-创建侧滑菜单的RecyclerView和MenuAdapter
 - 04-侧滑菜单条目点击
 - 05-点击侧滑菜单条目修改tab页面的标题
 - 06-点击侧滑菜单项同时关闭侧滑菜单
 - 07-加载新闻中心的内容页面
 - 08-初始化新闻中心ViewPager
 - 09-修改TabPagerIndicatorLibrary里面的样式
 - 10-点击按钮切换到一下个页面
 - 11-新闻中心页子tab页面的封装
 - 12-新闻中心子tab页面数据加载
 - 13-把新闻中心子tab加载的json数据转换成对应的模型
 - 14-加载轮播图的图片
 - 15-轮播图文字的改变
 - 16-轮播图滑动点的切换
 - 17-轮播图的自动切换和停止
 - 18-手指按下停止轮播图的切换
 - 19-轮播图的无限循环-在图片的前后多添加一张图片
 - 20-轮播图无限循环-数据下标的修正
 - 21-轮播图无限循环-向右不打开侧滑菜单
 - 22-轮播图的点击事件
 
            2-22 智慧北京-自定义上拉和下拉RecyclerView&组图
            
        
        - 01-新闻列表数据
 - 02-RecyclerView分割线的颜色修改
 - 03-RecyclerView上拉和下拉加载数据的架构
 - 04-XWrapAdapter的getItemViewType方法的处理
 - 05-根据XWrapAdapter的返回类型创建View和绑定View
 - 06-在RecylerView中初始化头布局和脚布局并添加到RecylerView上
 - 07-将轮播图添加到RefreshRecyclerView的头
 - 08-创建头布局中的下拉刷新布局
 - 09-给进度条设置红色的环形
 - 10-默认隐藏RefreshRecyclerView的头和脚布局
 - 11-处理dispatchTouchEvent方法拖滑出头布局
 - 12-定义头布局的三种状态
 - 13-头布局状态切换以及动画实现
 - 14-手指弹起后处理头布局的状态
 - 15-刷新加载最新的数据
 - 16-处理轮播没有完全展示往下滑出时,轮播图出现回缩
 - 17-快速拖动头的状态不切换bug修复
 - 18-处理RecyclerView的滑动状态控制脚布局的显示和隐藏
 - 19-处理RecyclerView显示脚
 - 20-处理加载脚数据、隐藏脚
 - 21-点击侧滑菜单切换新闻中心页的内容
 - 22-加载组图布局、缓存布局
 - 23-组图数据模型的转换
 - 24-组图数据的显示
 - 25-组图列表和网格类型的切换
 - 26-给RecyclerView添加垂直的分割线
 
            2-23 智慧北京-缓存性能优化&新闻详情页&三级缓存
            
        
        - 01-缓存工具类的编写
 - 02-处理数据的缓存
 - 03-切换Tab页面避免重新加载数据
 - 04-点击新闻条目进入新闻详情页
 - 05-修改Webview字体的大小
 - 06-ShareSdk分享
 - 07-点击的新闻条目变灰
 - 08-在新闻中心子tab的切换会多出轮播图bug修复
 - 09-拽下轮播图后轮播图停止切换的bug修复
 - 10-三级缓存的概念
 - 11-网络缓存加载图片
 - 12-网络缓存加载图片-图片错位
 - 13-磁盘缓存
 - 14-内存缓存
 - 15-软引用
 - 16-LruCache的使用和原理
 
            2-24 智慧北京-屏幕适配&极光推送&友盟统计
            
        
        - 17-为什么要屏幕适配
 - 18-了解切图
 - 19-图片适配
 - 20-布局适配
 - 21-权重适配
 - 22-尺寸适配
 - 23-代码适配
 - 24-获取屏幕参数
 - 25-dp转px的使用
 - 26-JPush推送集成
 - 27-JPush发送自定义通知
 - 28-友盟统计
 
            2-25 智慧北京-语音识别&二维码扫描
            
        
        - 01-科大讯飞-语音合成
 - 02-科大讯飞-语言识别
 - 03-科大讯飞-带对话框的语言识别
 - 04-zxing二维码扫描
 
            2-26 智慧北京-GridView框架&WebView&GridLayout
            
        
        - 05-可以移动的GridView
 - 06-GridLayout的使用
 - 07-DragEvent事件
 - 08-GridLayout条目拖拽交换
 - 09-自定义DragGridLayout
 - 10-webview的基本设置
 - 11-java和javaScript之间的互调
 - 12-360新闻-从服务器获取分类数据
 - 13-360新闻-新闻分类适配器
 - 14-360新闻-新闻适配器
 - 15-网页详情
 - 16-给网页图片添加点击事件、图片双击放大
 - 01-项目基本结构搭建
 - 02-条目布局的分析和设计
 
            2-27 智慧北京-列表视频播放
            
        
        - 03-MyVideoPlayer和MyVideoMediaController的初始化、列表界面实现
 - 04-MediaHelper工具类的封装
 - 05-点击播放按钮显示和隐藏控件、TextureView设置监听
 - 06-点击播放按钮进行视频的播放
 - 07-视频播放后对标题进行隐藏
 - 08-点击视频播放界面显示和隐藏控制界面
 - 09-视频控制界面显示和隐藏的动画
 - 10-视频缓冲进度条的更新
 - 11-更新播放时间和进度条
 - 12-拖动SeekBar控制视频的播放
 - 13-修改SeekBar的样式
 - 14-自动隐藏视频控制布局
 - 15-暂停和继续播放
 - 16-播放完成、重播
 - 17-点击其他条目的入口
 - 18-点击其他的条目进行播放
 - 19-滚动RecyclerView停止其他条目的播放
 
第三章 项目中级阶段
            3-1 电子市场-界面整体结构搭建
            
        
        - 001_项目展示
 - 002_应用如何分层
 - 003_创建包结构
 - 004_Android databinding使用
 - 005_导入常用工具类
 - 006_界面结构分析
 - 007_ToolBar使用
 - 008_DrawerLayout使用
 - 009_系统提供的Toolbar和列表联动解决方案
 - 010_利用系统提供的Activity学习联动处理
 - 011_依据AppBarLayout文档处理界面容器联动处理
 - 012_TabLayout学习
 - 013_测试界面联调
 - 014_使用简单工厂创建Fragment
 
            3-2 电子市场-界面流程化处理&首页数据加载
            
        
        - 015_流程化界面
 - 016_界面加载中处理
 - 017_错误界面处理
 - 018_空界面处理
 - 019_成功界面处理
 - 020_快速完成应用界面流程处理
 - 021_公共流程处理代码抽取
 - 022_处理Fragment提前加载数据的问题
 - 023_处理Fragment重复加载数据的问题
 - 024_Fragment流程开启的判断
 - 025_CommonPager编写
 - 026_修复Handler创建问题
 - 027_协议接口和OkHttp的优点介绍
 - 028_OkHttp访问网络处理步骤
 - 029_首页数据处理
 - 030_首页数据处理中细节完善
 - 031_首页数据显示(应用列表)
 - 032_问题处理
 - 032_使用DataBinding绑定首页条目数据
 - 033_使用Glide处理图片加载
 - 034_完成AppFragment的数据加载和展示
 
            3-3 电子市场-首页功能实现
            
        
        - 035_抽取两个Fragment中公共代码
 - 036_抽取两个Fragment中的Callback
 - 037_协议三级缓存流程
 - 038_从内存中获取数据
 - 039_从本地缓存中获取数据
 - 040_缓存HomeFragment数据
 - 041_缓存数据通用流程处理
 - 042_缓存网络数据到本地
 - 043_轮播处理_多类型条目展示
 - 044_轮播图片展示
 - 045_添加获取下一页条目
 - 046_分析加载更多数据流程
 - 047_控制加载更多条目显示
 - 048_抽取BaseHolder
 - 049_获取和处理本地缓存数据
 - 050_获取和处理网络数据
 - 051_显示下一页数据
 - 052_处理错误重试
 - 053_简化首页代码
 - 054_应用界面加载下一页功能处理
 - 055_加载下一页流程代码抽取
 - 056_showNextPagerData方法与onCreateViewHolder方法代码抽取
 - 057_onBindViewHolder方法代码抽取
 
            3-4 电子市场-游戏&专题界面功能实现
            
        
        - 058_游戏界面处理
 - 059_专题界面处理
 - 060_专题界面图片失真问题处理
 - 061_专题界面CardView适配
 
            3-5 电子市场-分类&推荐&排行界面功能实现
            
        
        - 062_分类界面数据处理
 - 063_分类界面数据绑定
 - 064_推荐界面数据处理
 - 065_推荐界面数据展示
 - 066_排行界面处理
 - 067_Tablayout水平滚动
 - 068_启动详情界面
 - 069_详情界面AppBar折叠布局如何使用
 - 070_详情界面通用流程引入
 - 071_详情界面数据加载
 - 072_详情界面Toobar数据设置
 - 073_详情界面应用信息展示
 - 074_详情界面安全信息展示
 
            3-6 电子市场-详情界面功能实现
            
        
        - 074_详情界面截图信息展示
 - 075_详情界面详细信息展示
 - 076_详情界面展开动画处理
 - 077_详情界面折叠动画处理
 - 078_下载流程
 - 079_应用信息展示
 - 080_Sugar使用步骤
 - 081_Sugar使用
 - 082_加载数据库测试数据并展示到界面
 - 083_判断应用是否安装过
 
            3-7 电子市场-下载功能实现
            
        
        - 084_线程池管理
 - 085_等待队列管理
 - 086_完成下载任务
 - 087_点击条目完成应用下载
 - 088_缓存数据库中读取的数据到DownloadInfo中
 - 089_下载过程中界面更新
 - 090_自定义进度控件圆环绘制
 - 091_进度绘制
 - 092_进度控件文本绘制
 - 093_点击事件处理
 - 094_应用安装和卸载的监听
 - 095_记录应用的信息到数据库中
 
第四章 项目高级阶段
            4-1 Hi聊-技术准备&Splash界面&主界面&架构抽取&输入昵称界面
            
        
        - 01_项目功能的演示
 - 02_项目模块、开源框架、架构的介绍
 - 03_如何使用MVP的架构来编码
 - 04_总结使用MVP的架构来编码的步骤
 - 05_EventBus的使用
 - 06_Glide图片网络框架的使用
 - 07_项目架构、分包
 - 11_主界面的布局架构、BottomNavigation和ButterKnife的导入
 - 12_BottomNavigationBar的初始化
 - 13_BadgeItem未读消息显示
 - 14_创建5个Tab对应的Fragment、Fragment工厂
 - 15_把附近Fragment添加到Container里面
 - 16_点击底部的Tab对应显示内容进行切换
 - 17_点击后退键把MainActivity放置到后台
 - 18_BaseFragment头布局的编写和抽取
 - 19_BaseFragment空布局的实现、设置标题和空图片抽象方法的编写
 - 20_BaseActivity的创建
 - 21_BaseActivity的行为的约束
 - 22_输入昵称界面完成
 - 23_输入昵称界面初始化、添加文字输入改变监听
 - 24_返回弹出提示对话框
 - 08_Splash界面
 - 09_从Splash界面进入主界面
 - 10_修改状态栏的颜色
 
            4-2 Hi聊-输入个人信息界面&注册界面&环信
            
        
        - 01_输入个人信息界面
 - 02_输入个人信息界面控件初始化
 - 03_打开系统相册获取一张图片
 - 04_打开系统的图片裁剪、保存裁剪图片
 - 05_日期选择对话框
 - 06_家乡的选择
 - 07_性别的选择
 - 08_下一步按钮状态的改变
 - 09_回退按钮事件处理
 - 10_弹出性别确认提示对话框
 
            4-3 Hi聊-Bmob&注册流程&登录后逻辑&登录界面
            
        
        - 11_注册界面的布局、初始化
 - 12_软件盘的监听
 - 13_吐司工具类的使用
 - 14_用户和密码的校验
 - 15_点击注册显示注册加载界面
 - 16_为什么采用环信、Bmob数据的存储
 - 17_环信的介绍、sdk下载
 - 18_环信SDK的集成
 - 19_动态申请权限
 - 20_Bmob云数据库SDK集成
 - 21_User模型创建
 - 22_把数据封装到User对象
 - 23_处理BmobFile用户头像通过Intent传递数据丢失
 - 01_注册界面的业务流程
 - 02_上传头像到Bmob云数据库
 - 03_保存用户的信息到Bmob云数据库
 - 04_在环信的服务器上创建账户
 - 05_登录到环信服务器、跳转到主界面
 - 06_登录成功后发送事件通知让5个Fragment修改界面
 - 07_登录成功后5个Fragment界面行为的分析
 - 08_判断用户是否登录到了环信的服务器
 - 09_根据用户登录的状态去显示标题的架构
 - 10_附近Fragment的登录标题显示
 - 11_直播Fragment登录后标题处理
 - 12_会话Fragment登录后标题显示
 - 13_通讯录、个人Fragment登录后标题的处理
 - 14_登录成功后BaseFragment内容显示架构
 - 15_登录界面的跳转和初始化
 - 16_在TextView的下面创建下划线
 - 17_登录界面登录按钮状态监听
 - 18_登录界面用户名和密码的合法校验
 - 19_登录界面显示加载的界面
 - 20_登录到环信的服务器
 
            4-4 Hi聊-个人信息&退出&通讯录
            
        
        - 21_从Bmob云数据库获取个人信息,跳转到主界面
 - 22_缓存当前登录的用户信息
 - 01_显示个人Fragment的个人信息
 - 02_点击退出弹出退出对话框
 - 03_分析退出的业务流程
 - 04_退出的业务操作
 - 05_在注册界面缓存、在Splash界面查询用户的信息
 - 06_完成通讯录fragmentBody布局的显示
 - 07_点击Tab对标题进行切换
 
            4-5 Hi聊-好友搜索&添加&好友列表&删除&聊天
            
        
        - 08_搜索好友界面初始化
 - 09-进入界面不弹出输入法、隐藏输入法
 - 10-搜索好友
 - 11-搜索好友列表数据绑定
 - 12-发送添加好友请求
 - 13-接收到好友请求的处理
 - 14-修改添加好友的设置为自动添加
 - 15-测试自动添加好友
 - 09_点击好友进入聊天界面
 - 10_消息的发送
 - 11_消息的存储、加载和常见的API
 - 12_获取会话消息
 - 13_展示消息列表
 - 01_消息间时间的处理、发送消息状态的监听
 - 02_修复监听消息发送的Bug、加载更多的消息
 - 03_接收到消息声音的提醒
 - 01_在Splash界面和登录界面获取联系人列表
 - 02_好友列表显示
 - 03_处理标题的切换
 - 04_添加好友后,刷新好友列表
 - 05_添加的好友进行排序
 - 06_RecyclerView条目点击效果的处理
 - 07_好友列表的条目点击和长按事件处理
 - 08_好友的删除
 
            4-6 Hi聊-聊天&会话列表&消息提醒&强制下线
            
        
        - 04_会话列表
 - 05_接收到消息会话列表和聊天列表处理
 - 06_未读消息数量的提醒
 - 07_在后台接收到消息弹出通知
 - 08_强制下线
 
            4-7 外卖-MVP结构搭建
            
        
        - 008_Dagger2简介和引入
 - 009_使用Dagger2的步骤
 - 010_深入解析Dagger2原理
 - 011_分析项目的整体结构
 - 012_整合ButterKnifer
 - 013_Retrofit简介和引入
 - 014_使用Retrofit的步骤
 - 015_参数替换原则
 - 016_整合OrmLite_创建数据库和表
 - 017_使用Ormlite进行关联关系查询
 - 022_划分项目结构
 - 023_创建包结构
 - 024_抽取业务层联网代码
 - 025_集成业务层数据库代码
 - 026_分析项目效果
 - 001_授课大纲
 - 002_搭建GIT服务器
 - 003_安装和使用客户端_关联服务器与本地库仓库
 - 004_使用客户端_提交与更新代码
 - 005_使用客户端_产生和解决冲突
 - 006_从MVC到MVP
 - 007_降低耦合度的方式方法
 
            4-8 外卖-首页功能实现
            
        
        - 027_处理首页Tab
 - 028_Selector自动生成工具
 - 029_切换Fragment
 - 030_分析HomeFragment布局
 - 031_实现头部侵入到状态栏中
 - 032_处理头部透明度渐变
 - 033_分析首页RecyclerView显示
 - 034_获取首页数据
 - 035_隔离首页的业务处理
 - 036_解析首页数据
 - 037_展示首页商家列表
 - 038_展示首页头条
 - 039_抽取网络代码
 
            4-9 外卖-商家界面功能实现
            
        
        - 040_打开商家界面
 - 041_处理Toolbar
 - 042_整合TabLayout与ViewPager
 - 043_使用StickyListHeaders
 - 044_分析联动功能
 - 045_点击左侧容器修改分组列表
 - 046_滚动分组列表刷新容器
 - 047_处理左侧条目显示问题
 - 048_替换模拟数据为服务器端数据
 - 049_替换商品分类列表条目
 - 050_替换商品列表条目
 - 051_实现添加和减少商品动画
 - 052_管理购物车
 
            4-10 外卖-商家&购物车&账户中心功能实现
            
        
        - 053_实现商品添加到购物车动画
 - 054_处理购物车气泡
 - 055_展示购物车界面
 - 056_处理购物车显示问题一
 - 057_处理购物车显示问题二
 - 058_登陆入口
 - 059_常见用户登录处理方式
 - 060_短信验证平台使用步骤
 - 061_展示用户信息及分析登陆界面功能
 - 062_获取验证码
 - 063_校验验证码
 - 064_完成登陆业务
 - 065_持久化用户数据到数据库
 - 066_事务管理
 
            4-11 外卖-账户中心&结算中心&地址管理
            
        
        - 067_结算中心功能列表
 - 068_处理数据展示
 - 072_地址编辑界面功能列表
 - 073_简化地址业务注入的操作
 - 074_添加地址
 - 075_界面问题修复
 - 076_修改地址
 - 077_删除地址
 - 078_修复仅能增加一条地址记录的问题
 - 079_显示结算中心地址
 - 069_完整的地址功能
 - 070_地址列表界面功能列表
 - 071_加载地址列表
 
            4-12 外卖-支付订单管理
            
        
        - 080_创建订单业务类
 - 081_改造Dagger2代码
 - 082_提交订单
 - 083_获取订单的支付信息
 - 084_展示订单支付界面数据
 - 085_支付宝简介_下载sdk_运行demo
 - 086_支付宝支付的流程
 - 087_app集成支付模块
 
            4-13 外卖-地图和订单管理
            
        
        - 088_高德地图介绍
 - 089_查看Demo定位代码
 - 090_处理定位
 - 091_查看Demo周边搜索代码
 - 092_实现周边搜索列表
 - 093_添加新增地址中定位功能
 - 094_保存新增地址坐标入库
 - 095_自动匹配默认地址
 - 096_处理界面适配问题
 - 100_展示订单详情界面
 - 101_管理订单状态
 - 102_处理服务器推送的订单数据
 - 103_利用观察者传递订单数据
 - 104_更新订单列表数据
 - 105_修改订单详情界面数据展示
 - 097_处理订单界面功能
 - 098_处理订单界面
 - 099_展示订单列表
 - 106_分析订单配送功能
 - 107_推送订单详情界面更新数据
 - 108_地图展示买卖双方
 - 109_地图展示骑手位置
 - 110_地图更新骑手位置
 
            4-14 外卖-数据统计
            
        
        - 111_项目开发善后工作
 - 112_友盟统计——常用功能
 - 113_自定义事件
 
            4-15 外卖-apk瘦身&多渠道打包&apk加固&增量更新
            
        
        - 114_代码混淆
 - 115_删除无用资源
 - 116_删除无用的语言文件
 - 117_图片压缩
 - 118_png图片转换成jpg图片
 - 119_其他压缩方式
 - 120_为什么进行多渠道打包
 - 121_多渠道打包操作
 - 122_apk加固
 - 123_服务器升级包生成
 - 124_手机端合成新版本APK
 - 125_定义native方法
 - 126_生成x86的so文件
 - 127_利用so文件完成手机段APK合成工作
 
第五章 Android进阶阶段
            5-1 VR基础和VR小项目
            
        
        - 01_VR介绍
 - 02_VR全景图介绍
 - 03_VR全景图代码实现
 - 04_VR全景图功能处理细节
 - 05_VR视频处理
 - 06_VR视频的处理细节
 - 07_VR小项目介绍
 - 08_VR项目架构介绍
 - 09_VR项目架构搭建
 - 10_主界面两个Fragment的处理
 - 11_VR全景图的列表显示
 - 12_点击条目跳转详情界面
 - 13_VR全景图详情的实现
 - 14_VR视频的列表显示
 - 15_显示全景图同时播放mp3音乐
 - 16_VR视频详情界面处理
 - 17_VR视频播放界面处理
 
            5-2 百度地图
            
        
        - 01_百度地图简介
 - 02_百度地图入门-申请KEY
 - 03_百度地图入门-校验KEY
 - 04_百度地图入门-缩放级别&&设置中心点
 - 05_百度地图入门-三个核心类
 - 06_百度地图入门-总结
 - 07_地图图层
 - 08_覆盖物-绘制圆
 - 09_覆盖物-文字
 - 10_Marker覆盖物
 - 11_泡泡显示
 - 12_矩形范围内搜索
 - 13_周边搜索
 - 14_城市内搜索&&详情搜索
 - 15_驾车路线
 - 16_驾车路线更改图标和添加途经点
 - 17_步行路线
 - 18_公交换乘
 - 19_其他内容
 - 20_定位介绍
 - 21_定位
 
            5-3 开源框架
            
        
        - 01_Logger使用
 - 02_PicassoTransformation图片转换
 - 03_NoHttp引入
 - 04_NoHttp发送异步请求
 - 05_NoHttp常用Api介绍
 - 06_MpAndroidChart使用
 - 12_模拟ButterKnife注解库
 - 13_模拟ButterKnife的注解处理器需求
 - 14_生成初始化控件类
 - 15_生成初始化控件的代码
 - 16_框架开发总结
 - 17_热修复简介
 - 18_配置project的build.gradle文件
 - 19_配置module的build.gradle文件
 - 20_DefaultApplicationLike子类编写
 - 21_错误apk编写
 - 22_完成修复
 - 23_热修复原理分析1
 - 24_热修复原理分析2
 - 07_Android-Apt工作内容
 - 08_处理流程
 - 09_使用JavaPoet定义方法
 - 10_使用JavaPoet定义类和生成文件
 - 11_完成HelloWorld代码生成
 
            5-4 源码分析
            
        
        - 01_课程介绍
 - 02_操作系统介绍
 - 03_虚拟机介绍
 - 04_创建虚拟机
 - 05_配置虚拟机
 - 06_安装Ubuntu系统
 - 07_安装虚拟机增强功能
 - 08_源码下载相关工具
 - 09_初始化源码下载环境
 - 10_下载Android源码
 - 11_配置JDK环境
 - 12_编译源码
 - 13_Handler的使用复习
 - 14_Android系统的启动流程
 - 15_SourceInsight介绍
 - 16_Handler关联的Looper由来
 - 17_loop方法里的死循环作用
 - 18_获取和回收消息的机制
 - 19_消息进入可执行队列的机制
 - 20_消息处理时的分配机制
 - 21_loop循环休眠时的唤醒机制
 - 22_AsyncTask运行机制
 - 23_拓展内容.FutureTask
 - 24_使用子线程的消息循环
 
            5-5 智能家居
            
        
        - 01_智能家居简介
 - 02_智能监控介绍
 - 03_智能监控流程
 - 04_输入界面
 - 05_显示界面控件初始化及输入内容的获取
 - 06_连接及监控画面显示
 - 07_断开连接
 - 08_蓝牙灯泡简介
 - 09_蓝牙灯泡基本流程
 - 10_打开关闭蓝牙
 - 11_扫描蓝牙设备之注册蓝牙广播接受者
 - 12_连接蓝牙设备
 - 13_开灯光灯点动
 - 14_蓝牙灯泡细节处理