视频课程 人浏览 历史评分   更新时间: 30天前 随到随学

课程介绍

注意0:欲购买此课程,获取安全购买链接,索要正版授权学习平台账号,务必加咨询QQ:2536379620
注意1:由于编码原因,试听课程视频画面清晰度不如最终购买的视频。最终购买视频的画面清晰度可参见以下两张图。图1   图2
注意2:正版良心视频,购买后有机会和原作者直接短暂技术交流。


课程简介
这是一门使用Java语言,从0开发一个Android平台,接近企业级的项目(我的云音乐),课程包含了基础内容,高级内容,项目封装,项目重构等知识,99%代码为手写;因为这是项目课程;所以不会深入到源码讲解某个知识点,以及原理,但会粗略的讲解下基础原理;主要是讲解如何使用系统功能,流行的第三方框架,第三方服务,完成接近企业级商业级项目,目的是让大家,学到真正的企业级项目开发技术。

适用人群
刚刚毕业的学生
想提高职场竞争力
想学从零开发Android项目
想提升Android项目开发技术
想学习Android项目架构技术
想学习企业级项目开发技术
就是想学习Android开发

能学到什么?
从0开发一个类似企业级项目
学会能做出市面上90%通用APP
快速增加1到2年实际开发经验
刚毕业学完后能找到满意的工作
已经工作学完可涨薪30%

课程大纲

01
项目演示/项目实战试看在第11章

课程简介和常见问题(22)

课程最终项目功能演示(54)

学习就是坚持坚持再坚持(3)

关于我们课程的价格(6)

02
编程学习路线和职业规划
通用编程学习路线(9)

如何在编程道路走得更远?(7)

03
关于课程常见问题
为什么要学习项目实战课?(4)

为什么是录播不是直播?(4)

有必要学习这么长的课程吗?(2)

有必要学习多平台开发吗?(2)

为什么不讲解MVP,MVVM等技术(4)

04
如何才能高效的学习?
人生苦短,我们只做好课(8)

找到适合自己的学习方法(5)

视频电子书源码学习方法(8)

如何解决遇到的问题?(8)

如何才能有效的提问?(10)

05
课程代码和资源使用方法
课程代码和资源简介(5)

项目代码使用方法(2)

如何查看代码和资源Git提交历史(18)

设计资源使用方法(5)

网络接口使用方法(3)

项目架构和知识点概述(2)

06
快速入门Postman工具
什么是Postman软件(4)

如何安装Postman(4)

接口的导入和导出(4)

Postman的基础使用方法(7)

07
版本控制概念和环境搭建
什么是版本控制系统(3)

有哪些版本控制系统(8)

什么是Git版本控制(5)

macOS系统上安装Git(2)

Windows系统上安装Git(4)

Linux系统上安装Git(2)

08
快速入门Git版本控制系统
获取Git使用帮助(5)

如何配置Git必要信息(3)

创建一个Git仓库(5)

将文件添加到Git中(6)

如何修改文件并提交到Git(4)

如何从Git还原文件(2)

多学一点Git版本控制系统(2)

Android项目Git忽略文件配置(3)

09
快速入门Git可视化工具
有哪些Git可视化工具(3)

GitFork查看提交历史(13)

10
快速入门Github使用方法
什么是Github?(3)

一般都是用Github做什么?(6)

如何搜索需要的资源(18)

如何下载仓库源码?(9)

如何收藏一个项目(6)

获取仓库信息和帮助(12)

11
创建项目和依赖管理
Android Studio如何创建项目(40)

什么是Gradle构建系统(41)

Android项目如何添加依赖(22)

如何查看依赖最新版本(15)

如何更改项目唯一标识(33)

12
快速入门Android Studio
常用编辑相关快捷键(14)

13
常见Java/Android错误解决
空指针错误模拟和解决方法(28)

14
启动界面和引导界面
启动页实现原理分析(5)

创建应用启动界面(34)

实现启动界面界面布局(46)

如何才能去除Activity标题(10)

如何实现启动界面全屏(12)

如何实现倒计时跳转界面(20)

如何手动创建引导界面(12)

15
继续实现引导界面
如何跳转到引导界面(13)

引导界面效果演示(5)

如何隐藏系统状态栏(6)

实现引导界面按钮(19)

如何实现控件圆角(13)

如何实现控件边框效果(8)

实现按钮按下效果(14)

16
引导界面和重构功能
实现按下改变文字颜色(6)

添加引导界面按钮监听(14)

实现通用BaseActivity类(10)

重构Activity启动方法(6)

重构Activity全屏设置方法(6)

实现跳转到登录注册界面(8)

实现跳转到首页界面(2)

17
完成引导界面相关逻辑
如何使用Android偏好设置(11)

保存是否显示了引导界面(22)

如何进入应用私有目录(13)

如何查看偏好设置文件(7)

Android Studio查看手机文件(7)

18
Fragment和引导界面
引导界面轮播图实现分析(2)

什么是Fragment(6)

如何使用Fragment(13)

如何Fragment中显示图片(16)

实现通用BaseFragment(16)

实现通用BaseCommonFragment(6)

19
ViewPager控件和引导界面
添加ViewPager控件依赖(3)

快速入门ViewPager使用(13)

使用ViewPager实现引导界面(10)

如何添加指示器依赖(7)

如何定义指示器shape(7)

如何实现指示器功能(10)

重构FragmentPagerAdapter(13)

20
实现用户登录注册
实现登录注册界面布局(31)

实现按钮点击事件(6)

如何跳转到登录界面(4)

如何跳转到注册界面(4)

登录注册界面重构思路(6)

如何让内容显示到状态栏(9)

添加ButterKnife框架依赖(5)

21
继续实现登录注册
快速入门ButterKnife框架(7)

重构ButterKnife框架使用(6)

完成重构登录注册界面(4)

实现登录界面标题功能(21)

如何重构Toolbar使用方法(6)

使用Toolbar实现返回功能(8)

快速实现登录界面布局(28)

22
继续实现登录功能
如何实现输入框背景(17)

查找控件并关联点击事件(6)

如何封装日志工具类(7)

添加Apache通用工具类(10)

实现判断用户和密码格式(13)

封装Toast提示工具类(27)

23
快速入门测试驱动开发
什么是测试驱动开发(8)

Android中的测试驱动开发(4)

测试驱动开发一般步骤(5)

使用测试驱动方法实现手机号格式判断(15)

实现手机号格式判断(6)

实现文件大小格式化(19)

单元测试总结(7)

24
如何实现用户注册功能
使用Android Studio调试项目(17)

完善用户注册规则校验(14)

进一步重构Toast工具类(5)

如何解决Dex方法数问题(13)

25
快速入门响应式编程
什么是响应式编程框架(9)

集成RxJava/RxAndroid框架(3)

26
如何在Android中请求网络
项目中网络请求实现概述(3)

添加网络权限和允许HTTP请求(6)

配置网络请求相关地址(24)

添加网络相关框架依赖(5)

查看我们提供的网络接口(8)

如何解析歌单详情网络响应(11)

配置Retrofit网络框架(13)

27
如何封装网络接口
如何使用Retrofit请求网络(30)

网络请求错误如何处理(27)

如何封装网络请求API(15)

如何显示请求对话框(6)

如何封装加载提示对话框(19)

完成网络请求加载提示(7)

如何请求歌单列表数据(12)

28
继续封装网络请求框架
如何封装详情网络请求(10)

如何使用DetailResponse(5)

如何封装列表网络请求(6)

如何封装网络请求回调(6)

实现通用Observer回调(9)

实现HttpObserver回调(10)

29
增强网络框架功能
查看Retrofit错误回调方法(18)

实现网络请求错误处理(19)

实现自动网络请求错误处理(10)

重构错误处理到工具类(6)

实现网络请求加载提示框(13)

如何显示网络请求日志(6)

实现程序内打印网络日志(13)

30
添加网络框架诊断功能
集成Stetho实现Chrome抓包(6)

初始化Stetho抓包工具(3)

如何使用Chrome抓包(7)

添加应用内网络检查器(8)

使用Chucker网络检查器(7)

31
如何实现用户登录注册
创建用户登录相关模型(12)

实现用户登录功能(17)

如何保存登录成功信息(18)

登录完成后跳转到首页(8)

如何解决登录后进入首页问题(3)

添加EventBus多界面通讯框架(2)

32
继续实现用户登录注册
登录完成后发送通知(13)

实现用户注册界面(18)

实现用户注册参数校验(22)

完成用户注册功能(15)

如何实现注册后自动登录(7)

重构用户登录逻辑(9)

33
签名配置和应用签名
什么是Android项目打包(5)

如何创建签名文件(14)

Android Studio可视化打包(12)

如何配置应用签名(15)

使用Gradle打包项目(12)

如何获取应用签名(5)

34
实现用户第三方登录
第三方登录相关概念(11)

一般第三方登录实现流程(7)

创建QQ第三方登录应用(18)

如何创建ShareSDK应用(8)

集成ShareSDK和配置(11)

实现QQ第三方登录功能(19)

项目中第三方登录流程(7)

35
继续实现第三方登录
实现跳转到补充用户资料界面(24)

注册时带上第三方登录信息(9)

完成用户第三方登录(20)

微博开发平台创建应用(13)

如何配置微博应用信息(3)

实现微博第三方登录(13)

36
继续实现用户相关功能
对接微博登录补充用户资料(4)

重构第三方登录逻辑(8)

37
实现找回密码功能
找回密码相关功能演示(7)

实现跳转到找回密码界面(8)

实现找回密码界面布局(25)

查看找回密码相关接口(7)

配置找回密码网络接口(8)

如何实现找回密码功能(22)

38
完成找回密码功能
实现验证码倒计时效果(13)

如何发送短信验证码(10)

如何发送邮箱验证码(6)

用户登录注册相关功能总结(7)

39
如何实现启动页广告
应用中添加广告简介(3)

实现跳转到广告界面(3)

实现启动页广告布局(30)

实现倒计时和跳过广告(10)

实现通用WebView界面(21)

实现点击广告功能(17)

实现注册界面用户协议(8)

40
快速入门Charles抓包
网络抓包概述(7)

安装Charles抓包软件(6)

快速入门Charles抓包(6)

Charles配置远程抓包(5)

Android自带模拟器抓包(7)

Android手机如何抓包(6)

41
实现主界面侧滑框架
首页功能演示(5)

实现侧滑结构布局(23)

将侧滑控件和Toolbar关联(12)

如何更改主界面状态栏颜色(18)

实现侧滑用户信息布局(25)

获取用户信息并显示(11)

添加Glide图片加载框架(6)

42
完成用户信息显示
如何配置ProGuard规则(9)

如何使用Glide显示图片(14)

完成显示用户头像功能(14)

重构图片显示框架使用(19)

Glide如何将图片显示为圆形(12)

实现首页侧滑按钮布局(36)

跳转到应用设置界面(6)

简单实现用户退出功能(13)

43
快速入门Android屏幕适配
屏幕尺寸/分辨率/像素密度/缩放(12)

屏幕适配原理和实例(27)

为什么需要1/2/3倍图(7)

44
Android如何编写UI测试
如何编写测试计划(11)

如何配置UI测试环境(8)

通过录制方式创建UI测试(23)

更改默认生成测试代码(47)

UI相关测试总结(3)

45
实现主界面框架
主界面框架结构效果演示(2)

创建首页Fragment(11)

快速入门ViewPager(19)

添加MagicIndicator指示器框架(3)

使用MagicIndicator指示器(29)

发现界面实现分析(2)

添加列表相关依赖(3)

实现发现界面列表(9)

46
继续实现发现界面
创建发现界面布局(4)

创建发现界面模型(13)

显示发现界面多类型列表(17)

如何实现自定义Item宽度(10)

从网络请求歌单数据(13)

从网络请求单曲数据(14)

完成发现界面标题显示(10)

47
实现发现界面列表
自定义正方形容器控件(15)

完成歌单界面布局(27)

完成歌单数据展示(5)

完成单曲界面布局(21)

完成单曲数据展示(6)

添加列表头部布局(14)

实现发现界面头部布局(34)

48
实现发现界面头部
如何显示当前日期(13)

如何请求轮播图数据(9)

添加轮播图组件依赖(4)

完成轮播图组件显示(20)

实现轮播图点击事件(6)

49
内存泄漏简介和检测
内存泄漏简介(4)

集成内存泄漏检测工具(8)

内存泄漏工具使用实例(17)

50
实现歌单详情界面
点击歌单跳转到歌单详情(20)

重构启动Activity功能(11)

歌单详情演示和实现分析(4)

创建歌单相关模型(12)

请求歌单详情数据(8)

实现歌单详情歌曲列表(21)

完成歌单详情歌曲显示(20)

51
实现歌单详情头部
如何实现歌曲列表分割线(11)

显示歌单详情头部(12)

完善歌单详情头部布局(47)

显示歌单详情数据(18)

使用Palette获取图片颜色(34)

添加GlidePalette依赖(5)

使用GlidePalette获取图片颜色(14)

52
实现歌单收藏功能
查看歌单收藏接口1(8)

如何传递用户登录信息(20)

显示歌单收藏状态(20)

实现歌单收藏点击事件(5)

配置歌单收藏接口(8)

完成歌单收藏功能(22)

优化收藏后的状态更新(9)

53
实现歌单详情跳转到其他界面
如何跳转到评论列表(10)

重构评论界面跳转方法(9)

跳转到用户详情(9)

右上角添加菜单按钮(19)

如何使用Image Asset(12)

Iconfont如何使用(9)

如何使用Material Icons(7)

54
如何实现音乐播放
音乐播放实现概述(6)

点击歌曲跳转到简单播放界面(9)

实现简单播放界面布局(17)

如何关联界面控件和方法(18)

音乐播放相关逻辑实现分析(5)

什么是面向接口编程(5)

实现音乐播放管理器单例(9)

55
继续实现音乐播放管理器
如何实现后台播放音乐(6)

使用Service延长应用生命(29)

Android中如何显示通知(28)

设置Service为前台服务1(11)

实现音乐播放暂停(18)

使用音乐播放管理器(10)

56
完善音乐播放管理器
如何显示播放状态(12)

如何使用播放代理(18)

重构播放器状态分发逻辑(10)

如何显示音乐总进度(20)

如何显示音乐播放进度(31)

界面上显示播放进度(5)

实现音乐进度拖拽(4)

57
如何实现播放列表
创建播放列表管理器(25)

在播放列表管理器中播放音乐(9)

完成播放列表管理器(6)

实现播放列表循环模式(29)

实现下一曲上一曲(10)

58
继续实现播放列表
如何监听播放完毕事件(7)

实现自动播放下一曲(16)

如何显示播放列表(9)

播放点击的这音乐(6)

如何显示播放状态和入口(6)

实现迷你音乐控制栏布局(30)

查找控件和设置点击事件(11)

59
增强音乐播放相关功能
如何使用Java接口默认方法(6)

迷你控制器显示数据(15)

实现播放管理器监听器(6)

实现迷你控制器点击事件(6)

显示和隐藏迷你控制器(5)

播放列表如何选中播放的音乐1(25)

60
继续完成音乐播放功能
实现歌单详情显示选中状态(23)

播放列表删除效果演示(3)

音乐播放列表删除交互(20)

完成播放列表音乐删除(13)

重构迷你控制器功能(11)

发现页面显示迷你控制器(9)

61
完善播放周边功能
查看迷你控制器播放列表(2)

如何显示播放列表(15)

实现播放列表布局(17)

重构迷你播放列表对话框(11)

显示播放列表音乐数据(24)

选中音乐效果和播放点击的音乐1(8)

62
继续实现迷你控制器
实现迷你控制器删除音乐(8)

修复迷你控制器删除音乐问题(12)

迷你控制器删除所有音乐(8)

迷你控制器显示播放列表信息(10)

63
实现歌单详情音乐更多功能
添加音乐更多点击事件(11)

显示音乐更多对话框(12)

实现更多对话框布局(25)

显示音乐相关信息(12)

实现音乐更多对话框点击事件(8)

64
实现音乐通知栏功能
音乐通知栏功能演示(5)

将音乐通知放到管理器中(6)

准备显示音乐通知(11)

如何显示自定义布局通知(20)

实现音乐小通知布局(15)

实现音乐大通知布局(16)

显示音乐通知数据(9)

65
完成音乐通知栏功能
显示音乐封面图(7)

添加通知点击事件(34)

实现通知点击事件功能(6)

实现点击通知显示播放界面(15)

66
如何持久化播放列表
持久化播放列表概述(5)

集成数据库框架(7)

数据库框架快速入门(12)

查看数据库相关信息(3)

如何查看数据库数据(5)

保存播放列表实现概述(3)

创建保存歌曲数据对象(13)

67
继续实现持久化播放列表
数据库如何实现多用户功能(21)

如何封装音乐保存音乐功能(24)

保存最后播放的音乐进度(9)

保存最后播放的音乐(8)

从数据库恢复播放列表(23)

从数据库播放列表删除音乐1(12)

如何实现删除所有音乐功能(9)

如何实现从上一次位置播放(11)

68
完善音乐播放框架
请求歌词实现概述(2)

歌词数据接口和数据格式(3)

从网络请求歌词(13)

如何播放发现界面单曲(9)

69
实现黑胶唱片相关功能
跳转到黑胶唱片界面(9)

黑胶唱片界面分析(5)

实现基本结构布局(13)

显示歌曲标题和背景(9)

添加Glide变换框架(2)

如何实现背景高斯模糊(9)

如何实现背景切换动画(3)

70
继续黑胶唱片播放
实现背景切换动画功能(21)

修复背景图片压扁问题(6)

播放界面右上角添加按钮(11)

如何实现播放相关界面1(26)

关联播放界面相关控件(11)

如何对接音乐播放功能(6)

完成音乐播放监听器功能(10)

71
完善黑胶唱片播放
实现歌曲切换和播放模式(7)

显示播放列表对话框(2)

实现歌曲拖拽播放功能(4)

如何实现关闭播放界面(7)

如何实现黑胶唱片列表1(12)

添加圆形ImageView控件(1)

实现黑胶唱片控件布局(17)

如何显示黑胶唱片数据(5)

72
如何实现用户登录注册
滚动到当前音乐黑胶唱片(8)

如何实现手动切换黑胶唱片(3)

实现手动切换黑胶唱片(40)

实现旋转黑胶唱片分析(3)

分发黑胶唱片旋转和停止旋转事件(17)

实现旋转黑胶唱片功能(15)

73
完善黑胶唱片功能
如何显示黑胶唱片指针(17)

实现黑胶唱片指针旋转(26)

修复黑胶唱片指针旋转问题(10)

修复暂停下指针旋转问题(6)

74
实现音乐歌词的解析
歌词功能实现分析(3)

常见音乐歌词分类(11)

歌词解析实现分析(7)

使用测试驱动方法解析LRC歌词(18)

完成LRC歌词解析(20)

更改歌词相关模型(5)

KSC歌词解析测试(11)

75
继续实现歌词解析
完成KSC歌词解析功能(21)

如何显示歌词列表界面(29)

实现黑胶唱片和歌词的切换(16)

如何根据播放时间滚动歌词(19)

如何高亮正在播放的LRC歌词(7)

如何滚动当前歌词到中心(16)

如何让歌词前面后面都有空行(17)

76
进阶音乐歌词相关功能
实现歌词拖拽效果布局(9)

如何精确计算占位数1(11)

实现显示和隐藏歌词拖拽效果(21)

显示当前拖拽位置歌词时间(18)

实现从当前歌词播放音乐(4)

如何实现KSC歌词高亮(10)

77
完善音乐歌词相关功能
更改为自定义控件绘制歌词1(20)

实现自定义控件绘制LRC歌词(35)

完成自定义控件LRC歌词绘制(12)

将时间信息传递到自定义歌词View(15)

自定义KSC歌词绘制控件(28)

完成KSC歌词绘制控件(28)

如何给自定义控件添加属性(15)

78
完成音乐歌词相关功能
完成歌词控件属性添加(6)

歌词控件添加位置属性(10)

迷你播放控制器添加歌词控件(32)

歌词相关功能总结和重构(4)

79
如何实现桌面歌词
全局桌面歌词效果演示(6)

如何获取全局浮窗权限(21)

将桌面歌词放到管理器中(10)

如何显示一个简单的浮窗(17)

将全局歌词封装到View中(14)

实现全局歌词控件布局(17)

如何接收显示全局歌词事件(9)

80
继续实现桌面歌词
保存是否显示全局歌词(8)

第一次是否显示全局歌词(23)

给全局歌词控件添加点击事件(12)

将全局歌词事件代理到外部(10)

实现音乐控制相关按钮功能(6)

实现歌词精简模式和正常模式(12)

完成全局歌词控件歌词显示(35)

81
进阶全局桌面歌词
添加嵌套RadioGroup框架(4)

完成全局歌词样式布局(17)

显示或隐藏歌词样式容器(4)

实现更改歌词文本大小(12)

使用偏好设置保存歌词大小(11)

如何自定义单选按钮样式(15)

实现更改歌词高亮颜色(13)

82
增强全局桌面歌词
如何保存歌词高亮颜色(12)

实现全局歌词锁定功能(37)

实现应用后台才示歌词(18)

如何实现触摸移动全局歌词(4)

实现触摸移动全局歌词(27)

完成触摸移动全局歌词(17)

实现保存全局歌词位置功能(7)

83
与播放相关的周边功能
长按封面跳转到封面大图界面(10)

添加手势缩放图片框架(1)

完成图片手势缩放功能(6)

添加Apache文件框架依赖(2)

84
如何处理Android中的权限
Android整体权限处理概述(8)

添加动态权限处理框架(2)

实现动态获取存储卡权限(33)

实现下载音乐封面图片功能(18)

如何将音乐封面保存到相册(26)

85
如何实现歌词分享
歌词分享相关功能演示(4)

长按歌词跳转到选择歌词界面(11)

如何显示选择歌词列表(14)

如何实现歌词选中功能(13)

如何获取选中的歌词(17)

如何实现分享文本歌词(14)

跳转到分享图片歌词界面(10)

86
完成歌词分享功能
实现分享歌词图片界面(23)

如何添加右上角菜单(7)

如何在应用内对View截图(11)

如何保存Bitmap到手机(34)

实现歌词图片分享功能(26)

87
实现评论相关功能
评论相关功能效果演示(9)

查看评论相关网络接口(3)

创建评论相关模型(5)

从网络请求评论数据(8)

添加列表框架依赖(2)

实现评论界面布局(14)

如何显示评论列表(21)

实现评论Item布局(15)

88
继续实现评论相关功能
显示评论相关数据(13)

添加日期时间框架(3)

实现评论时间格式化(21)

适配器中如何使用View框架(3)

完成重构Adapter功能(22)

使用重构后的Adapter(4)

实现Item点击事件功能(5)

89
增强评论相关功能
如何实现发送评论功能(19)

如何显示Mention和HashTag(3)

通过正则实现查找Mention(17)

通过正则实现查找HashTag(8)

重构正则表达式查找方法(4)

实现评论关键内容高亮(11)

给高亮内容添加点击事件(20)

如何去除点击文本下划线(5)

90
发布评论相关功能
如何获取点击的评论文本(9)

实现点击@跳转到用户详情(9)

实现点击话题跳转到话题详情(7)

显示评论更多操作对话框(20)

如何显示被回复的评论(20)

91
完成发布评论相关功能
如何回复一条评论(10)

如何实现拷贝评论(7)

添加评论点赞接口(10)

实现评论点赞功能(21)

92
实现评论列表选择话题
如何监听文本输入框(7)

实现跳转到选择话题界面(6)

修复选择话题选择问题(6)

实现请求话题列表数据(7)

实现显示话题列表(7)

完成话题数据显示(11)

完成选择话题功能(13)

完成选择好友功能(32)

93
增强好友列表功能
好友列表增强功能演示(3)

添加汉语拼音框架(1)

实现获取汉语全拼(14)

实现获取汉语全拼首字母(6)

实现处理用户数据拼音(23)

实现用户数据分组功能(22)

94
如何实现用户数据过滤
显示用户分组数据(30)

Toolbar搜索配置(19)

实现本地数据过滤(11)

如何实现好友字母索引(3)

快速入门字母索引框架(21)

完成用户字母索引功能(6)

完成字母索引提示功能(10)

95
下拉刷新和上拉加载更多
下拉刷新和上拉加载更多效果(7)

完成下拉刷新功能(6)

完成上拉加载更多功能(32)

实现评论列表分组功能(17)

96
Android中显示emoji
什么是emoji(3)

添加emoji兼容包依赖(3)

实现Android中显示emoji(6)

97
实现首页我的界面
我的界面相关功能演示(4)

实现请求歌单数据(18)

显示我的歌单列表(34)

完成歌单列表数据展示(22)

自定义展开图标和默认展开(10)

实现标题右侧更多按钮(7)

实现创建歌单对话框(18)

98
完善我的界面功能
实现创建歌单功能(8)

收藏歌曲到歌单相关功能演示(9)

显示选择歌单对话框(20)

完成歌曲收藏到歌单功能(23)

完成从歌单中删除音乐功能(19)

实现头部快捷按钮功能(18)

99
实现本地音乐相关界面
本地音乐功能演示(5)

跳转到本地音乐界面(4)

更改音乐模型(5)

实现从数据库查询本地音乐(8)

跳转到扫描本地音乐界面(5)

实现本地音乐菜单(9)

实现扫描本地音乐布局(19)

100
实现扫描本地音乐
如何扫描本地音乐(7)

准备本地音乐数据(6)

实现本地音乐扫描(36)

完成本地音乐扫描(28)

扫描完成和扫描进度(20)

如何保存本地音乐(11)

显示本地音乐列表(7)

101
增强本地音乐功能
实现播放本地音乐(11)

显示音乐排序对话框(16)

如何保存排序选项(6)

实现本地音乐排序功能(6)

实现批量编辑功能界面(12)

进入和退出编辑模式(12)

实现适配器编辑模式(10)

102
实现本地音乐多选功能
实现多选音乐功能(13)

实现全选反选功能(10)

实现多选删除功能(11)

实现扫描线移动动画(20)

扫描音乐结果通知(8)

实现放大镜扫描动画(14)

复习数学中三角函数(12)

本地音乐相关功能总结(2)

103
如何实现下载功能
实现跳转到下载管理页面(7)

下载功能实现概述(4)

集成第三方下载框架(4)

实现下载管理器实例(8)

播放界面显示下载状态(24)

实现播放界面创建下载任务(14)

歌单详情显示下载状态(10)

104
继续实现下载功能
播放下载完成的音乐(6)

创建下载相关Fragment(8)

实现下载界面框架结构(7)

实现下载界面指示器(14)

实现下载完成音乐布局(9)

显示下载完成的任务(14)

105
增强下载相关功能
如何播放下载完成的音乐(5)

实现通用确认对话框(10)

实现删除下载完成的音乐(8)

实现下载中音乐布局(13)

显示下载中的音乐(15)

显示下载相关数据(19)

实现单首音乐下载和暂停(4)

106
完成下载相关功能
实现删除下载中的音乐(8)

实现下载完成音乐通知(12)

实现下载中辅助按钮布局(9)

显示第一次下载按钮状态(11)

实现全部暂停或下载功能(7)

实现全部删除功能(7)

测试多用户下载功能(8)

下载相关功能总结(1)

107
实现用户详情界面
请求用户详情数据(8)

用户详情界面分析(4)

创建用户详情相关Fragment(6)

显示用户详情滚动界面(14)

实现用户详情指示器(11)

实现用户详情歌单界面(4)

对歌单详情数据分组(14)

108
继续用户详情界面
显示用户详情歌单列表(12)

实现用户信息布局(14)

实现指示器悬浮功能(18)

实现歌单点击事件(4)

显示用户信息(18)

实现关于用户布局(14)

显示用户更多信息(12)

109
完善用户详情功能
好友社交关系简介(3)

实现关注取消关注用户(12)

实现跳转到发送消息界面(6)

110
实现视频相关功能
请求视频列表数据(9)

如何显示视频列表(7)

完善视频列表布局(30)

完成视频列表数据显示(11)

点击视频跳转到详情(5)

如何使用Glide实现圆角(9)

视频详情功能演示和分析(10)

111
完善视频播放功能
实现视频详情布局(28)

请求视频详情数据(5)

显示视频详情基本数据(8)

快速入门视频播放(8)

显示视频总时长数据(3)

隐藏和显示播放控制器(5)

显示播放视频进度(11)

112
增强视频播放功能
动态计算视频容器高度(18)

实现视频拖拽播放(4)

转屏功能实现概述(5)

完成屏幕的自动旋转功能(11)

如何监听屏幕方向(12)

实现播放界面手动转屏(7)

返回按钮逻辑优化(10)

113
实现视频转屏功能
请求相关视频和评论数据(6)

实现列表的显示(27)

显示相关视频数据(16)

如何显示视频头部(5)

添加标签流框架(2)

实现视频头部布局(15)

显示视频头部数据(12)

114
完善视频播放界面功能
显示视频标签流数据(15)

实现视频播放界面常亮(12)

如何监听视频缓冲进度(8)

实现视频播放错误处理(13)

如何显示播放完毕布局(13)

关于视频相关功能优化说明(3)

115
实现用户动态功能
用户动态相关功能演示(4)

从网络请求动态数据(11)

如何显示动态列表(7)

实现动态布局文件(22)

添加图片显示控件(10)

完成动态图片显示(7)

实现动态计算图片列数(4)

116
继续实现用户动态
添加图片预览框架(2)

实现预览动态图片(21)

如何使用浮动按钮(10)

跳转到发布动态界面(9)

实现发布动态界面(20)

实现发布文本动态(14)

117
继续实现发布动态
实现输入框字数统计(5)

添加图片选择框架(5)

如何实现多选图片功能(14)

如何显示选择的图片(24)

实现删除选择的图片(6)

实现添加图片按钮(14)

118
如何实现上传图片
媒体资源存储概述(10)

安装阿里云OSS SDK(3)

初始化阿里云OSS(16)

实现上传图片到阿里云OSS(39)

实现发布图片动态(4)

119
如何使用高德地图
定位实现概述(4)

获取签名文件唯一标识(5)

获取高德地图配置信息(5)

如何集成高德定位SDK(3)

添加定位权限和初始化SDK(6)

实现基础单次定位(18)

发送动态带上定位信息(7)

动态相关功能总结(3)

120
如何实现编辑用户资料
查看编辑用户信息效果(6)

添加用户资料编辑按钮(10)

跳转到编辑资料页面(8)

实现编辑资料界面布局(33)

关联资料界面控件和方法(12)

获取用户资料并显示(13)

实现选择图片并裁剪(5)

121
继续实现更新用户资料
实现上传头像功能(9)

实现更新用户头像(16)

更新昵称和个人介绍(6)

实现用户性别选择(15)

实现日期选择器(16)

添加城市选择器框架(7)

实现城市选择功能(7)

122
完成用户资料相关功能
绑定解绑第三方账号概述(2)

实现QQ账号绑定(17)

实现QQ账户解绑(8)

实现微博绑定和解绑(4)

用户相关功能总结(5)

123
实现好友和粉丝功能
实现跳转到好友列表(8)

如何实现粉丝列表(13)

请求好友和粉丝数据(8)

实现用户列表界面(13)

显示添加好友按钮(8)

124
修复用户自动退出问题
实现登录过期自动退出功能(7)

什么是ActivityLifecycle(7)

如何修复用户退出问题(14)

125
进阶响应式编程
将我的界面歌单获取改为并发(15)

关于响应式编程的总结(6)

126
实现二维码相关功能
二维码相关功能演示(5)

实现跳转到我的二维码界面(5)

实现我的二维码界面布局(13)

显示用户信息到界面(4)

添加二维码框架依赖(1)

生成二维码相关概述(5)

如何生成我的二维码(10)

127
继续实现二维码相关功能
使用自带二维码扫描界面(11)

实现跳转到扫描界面(5)

实现扫描界面布局(18)

实现扫描二维码(10)

实现二维码结果解析(14)

二维码实现总结(2)

128
实现商城相关功能
商城相关功能概述(7)

实现跳转到商品列表(6)

请求商品列表数据(7)

显示商品列表数据(13)

实现跳转到商品详情(5)

实现商品详情布局(11)

请求数据和显示数据(9)

129
实现商品和订单功能
实现创建订单功能(15)

创建订单后跳转到订单详情(5)

创建商品订单模型(16)

实现订单详情布局(36)

关联详情界面控件和方法(8)

显示订单详情数据(19)

130
如何实现支付宝支付
什么是第三方支付(3)

支付宝支付准备工作,服务端知识客户端了解(12)

如何集成支付宝SDK(6)

使用测试数据发起支付(19)

请求支付宝支付参数(16)

请求服务端判断是否支付成功(16)

支付宝支付客户端问题排查(2)

131
继续实现支付宝支付
如何集成微信支付(4)

实现切换订单支付方式(4)

实现跳转到我的订单界面(7)

显示订单列表数据(6)

完善订单列表显示(13)

实现点击订单进入订单详情(2)

订单列表监听支付成功状态(8)

商城订单支付功能总结(3)

132
实现应用设置相关功能
实现设置界面布局(41)

增强用户退出功能(2)

使用偏好设置保存配置(9)

添加网络状态监听框架(2)

快速入门网络状态监听(10)

实现移动网络暂停视频(23)

133
使用可视化实现关于我们
跳转到关于我的云音乐(6)

可视化实现关于我的云音乐界面(14)

如何显示应用版本号(15)

实现显示关于(2)

134
使用代码实现关于我们
跳转到代码实现关于界面(4)

实现代码关于界面标题(9)

实现代码关于我的云音乐布局(26)

完成代码关于我的云音乐布局(20)

135
实现全局搜索功能
全局搜索功能演示(4)

跳转到全局搜索界面(6)

菜单显示搜索状态(12)

实现搜索界面布局(18)

创建搜索结果相关Fragment(6)

显示搜索结果框架界面(12)

搜索结果界面接收搜索关键字(17)

实现搜索歌单功能(15)

136
增强全局搜索功能
实现搜索用户功能(10)

添加其他数据库框架(4)

如何配置数据库模型(7)

快速入门数据库使用(7)

封装数据库使用功能(10)

保存和查询搜索历史(7)

显示搜索历史列表(11)

137
继续实现搜索相关功能
实现搜索历史和结果切换(12)

完成搜索历史功能(16)

实现搜索历史头部布局(11)

显示热门搜索数据(8)

请求搜索建议数据(12)

显示搜索建议数据(22)

搜索建议接口限流(8)

138
常用哈希和加密算法
什么是Base64编码(5)

添加加密算法依赖库(5)

实现Android版Base64编码(21)

什么是SHA1签名算法(4)

SHA1签名算法实现(12)

什么是AES加密算法(3)

AES加密解密算法实现(24)

139
如何让网络接口更安全
如何让接口更安全(4)

实现接口签名和加密概述(4)

实现签名加密测试界面(21)

查看签名加密的接口(14)

实现订单列表响应签名接口(6)

创建修改网络拦截器(13)

140
继续实现接口安全
实现验证接口响应签名(13)

测试接口响应签名(16)

实现创建订单参数签名接口(7)

实现请求参数签名(12)

测试请求参数签名(2)

实现订单列表响应加密接口(5)

141
完成接口安全相关功能
实现解密接口响应内容(15)

实现创建订单参数加密接口(5)

实现请求参数加密功能(11)

接口安全功能总结和优化(4)

142
企业级项目日志解决方案
企业级日志解决方案简介(7)

常用第三方日志框架(5)

如何集成日志框架(4)

初探企业级日志框架(24)

如何定制日志规则(26)

多学一点Logback(5)

日志功能总结和优化(3)

143
项目打包和分发
如何更改软件名称(3)

如何制作应用图标(9)

生成多尺寸图标(7)

如何更改APP图标(8)

使用自带图标更改APP图标(8)

Android应用版本标识(5)

可视化打包项目(7)

144
完成项目打包和分发
命令行打包项目(5)

混淆压缩和安全相关(11)

如何分发APK应用(4)

如何上传到360市场(6)

145
如何实现异常上报功能
什么是腾讯Bugly服务(5)

在腾讯Bugly后台创建应用(4)

如何集成异常上报SDK(14)

初始化异常上报SDK(4)

测试异常上报功能(11)

查看崩溃日志信息(8)

146
如何实现应用内升级功能
集成应用内升级SDK(7)

测试应用内升级效果(11)

实现手动检测更新功能(4)

147
如何使用第三方统计服务
为什么要添加统计(13)

创建第三方平台应用(2)

集成第三方统计SDK(11)

添加页面统计事件(17)

添加登录统计事件(27)

添加注册统计事件(17)

添加购买统计事件(13)

实现统计跳过广告次数(6)

148
网络请求缓存相关功能
网络缓存功能概述(3)

如何实现网络请求结果缓存(3)

HTTP缓存相关知识(8)

OkHttp如何实现请求结果缓存(9)

网络缓存功能总结和优化(2)

149
即时通讯相关功能
聊天相关功能演示(12)

聊天概念和实现原理(6)

集成第三方聊天SDK(5)

如何初始化聊天SDK(10)

实现聊天注册登录和退出(24)

150
实现聊天相关功能
实现跳转到聊天界面(8)

测试聊天SDK是否集成成功(9)

实现跳转到我的消息界面(7)

如何获取会话列表数据(5)

如何显示我的消息列表(5)

完成会话列表Item布局(22)

实现显示用户信息(21)

151
继续实现聊天相关功能
完成聊天界面布局(22)

如何显示聊天的消息(2)

创建聊天界面适配器(6)

实现文本消息布局(8)

实现文本消息ViewHolder(8)

显示聊天历史消息列表(13)

实现文本消息背景(4)

152
继续实现消息发送功能
如何使用9-Patch图片(4)

如何制作9-Patch图片(22)

实现发送文本消息(5)

显示自己发送的消息(9)

如何滚动列表到底部(6)

如何显示发送来的消息(2)

153
增强聊天消息功能
聊天界面接收消息(12)

不显示正在聊天消息到通知栏(4)

实现点击消息通知进入聊天界面(9)

创建图片消息布局(11)

实现显示图片消息(9)

实现发送图片消息(13)

应用中如何提示有消息(3)

154
完成聊天消息提示功能
添加红点框架依赖(2)

在我的消息消息未读消息数(12)

首页实时显示消息数(3)

实现首页按钮显示未读消息数(10)

即时聊天相关功能总结和优化(3)

155
实现应用内推送功能
添加第三方推送SDK(1)

配置和初始化第三方推送(6)

实现接收自定义消息(6)

在后台测试第三方推送(11)

156
实时挤掉用户实现
查看实时挤掉用户效果(3)

实时挤掉用户原理(2)

实现解析退出事件(12)

如何显示全局弹窗(2)

获取当前显示的Activity(5)

实现全局显示弹窗(12)

实现实时挤掉用户(18)

157
真实项目中的最佳实践
真实项目中如何添加注释(8)

158
使用SpringBoot课程API
SpringBoot课程API区别(6)

更改项目网络相关功能(25)

159
项目重构和Bug修复
如何升级项目一些依赖版本(10)

输入框自定义背景问题(4)

160
微信登录相关准备工作
查看微信相关平台概述(8)

认证微信开放平台账号(6)

如何创建移动APP应用(11)

161
实现微信登录相关功能
实现微信第三方登录功能(14)

162
微信支付相关准备工作(服务端)
微信支付总体流程概述(19)

注册并开通微信商户平台(12)

应用和商户平台关联(12)

163
继续实现微信支付功能
实现调用微信支付SDK(14)

实现微信支付结果处理(19)

测试整体微信支付流程(3)

164
项目总结
这不是结束而是新的开始(4)
相关推荐
客服 关于