课程试听
第一章 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_蓝牙灯泡细节处理