Android 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器aaa
MDPlayer万能播放器
MDPlayer,基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器,可以播放本地和在线视频,可以浏览宅男杀手妹纸图片,UI设计遵循 Material Design。
GitHub地址:https://github.com/Dawish/MDPlayer
UI浏览:
1.UI设计:
- 列表使用
RecyclerView,item为CardView并设置ripple波纹点击效果 - viewpager指示器使用
TabLayout - 侧滑栏使用
NavigationView - 图片详情使用开源控件PhotoView,支持大缩小,旋转等等操作。
- FloatingButton为开源控件
FloatingActionMenu
2.App设计:
- 为
MVP架构,第一次真正使用MVP,真的使用了才会发现MVP的优势,MVP可以使Activity和Fragment非常简洁,Activity和Fragment中也不需要知道是怎么操作和流转的,我们只需要在回调接口中操作更新UI就可以了。 - 所以得异步操作都使用
Rxjava+Rxandroid,以前也是没用过,用过才发现、Rxjava是真的强大,Rxjava拥有非常丰富的操作符,我们灵活使用Rxjava可以创造无限可能,Rxjava就像搭建积木,Rxjava的操作符就行是积木块,使用Rxjava我们可以搭建出各种各种的积木,可以创造出很多可能,前提是你对Rxjava十分了解。 - 网络请求采用
retrofit2.0,retrofit2.0本身就很强大,配合、Rxjava后就更加强大了,retrofit2.0的使用我还没有更加深入的研究,日后再搞。 - 离线缓存,离线缓存策略为,每次进入都是显示上一次的数据,本次的数据缓存下来,留着下一次显示,这样可以加快UI显示速度,可以离线使用App。
- 图片加载使用
picasso,picasso本身支持本地缓存。
3.知识点:
通过本app你可以学到:
- ijkplayer-Android 编译封装和集成
- MVP架构,虽然我的这个app不是很复杂,但是大概的MVP是有的,首先我承认我的Model层写得不是很好。
- 可以学习到Rxjava的使用,使用Rxjava递归读取内存所有的视频文件并分类,可以学习到just、from、flatMap、groupBy、filter等Rxjava操作符,相对别的app我用到的操作符相对还算多的。
- 学习到retrofit2.0的使用,结合Rxjava做网络请求。
- 离线缓存,可以学习到离线数据缓存策略,以及缓存工具的使用。
- BaseActivity、BaseFragment、BaseRecyclerViewAdapter和BaseRecyclerViewHolder的封装。
- Material Design和android5.0以后的新控件使用
4.依赖库:
//FloatingActionMenu
compile 'com.github.clans:fab:1.6.4'
//retrofit
compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
//Rxjava + Rxandroid
compile 'io.reactivex:rxandroid:1.2.0'
compile 'io.reactivex:rxjava:1.1.5'
//blurview
compile 'com.eightbitlab:blurview:1.0.2'
//photoview
compile 'com.bm.photoview:library:1.4.0'
//picasso
compile 'com.squareup.picasso:picasso:2.5.2'
//umeng
compile 'com.umeng.analytics:analytics:latest.integration'
5.APK下载:
上架中…
6.知识点引导:
- ijkplayer-android在ubuntu下编译请看我的文章:http://blog.csdn.net/u010072711/article/details/51438871
- Rxjava入门引导请看:http://blog.csdn.net/u010072711/article/details/51590553
- Android MVP+Retrofit+RxJava实践小结:http://wuxiaolong.me/2016/06/12/mvpRetrofitRxjava/
7.下版本改进
- 下版本希望改进model层,对数据操作更加简洁
- 增加视频播放历史记录
- 自定义视频播控
- 使用注解替代findViewById
Android 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器aaa的更多相关文章
- Android进阶:七、Retrofit2.0原理解析之最简流程【下】
紧接上文Android进阶:七.Retrofit2.0原理解析之最简流程[上] 一.请求参数整理 我们定义的接口已经被实现,但是我们还是不知道我们注解的请求方式,参数类型等是如何发起网络请求的呢? 这 ...
- 使用Vitamio打造自己的Android万能播放器(4)——本地播放(快捷搜索、数据存储)
前言 关键字:Vitamio.VPlayer.Android播放器.Android影音.Android开源播放器 本章节把Android万能播放器本地播放的主要功能(缓存播放列表和A-Z快速查询功能) ...
- 使用Vitamio打造自己的Android万能播放器(7)——在线播放(下载视频)
前言 本章将实现非常实用的功能——下载在线视频.涉及到多线程.线程更新UI等技术,还需思考产品的设计,如何将新加的功能更好的融入到现有的产品中,并不是简单的加一个界面就行了,欢迎大家交流产品设计和技术 ...
- Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器
效果图如下: (PS本来是要给大家穿gif动态图的,无奈太大了,没法上传) 功能实现:暂停,播放,快进,快退,全屏,退出全屏,等基本功能 实现的思路: 在主布局中放置一个SurfaceView,在Su ...
- 使用Vitamio打造自己的Android万能播放器(6)——在线播放(播放列表)
前言 新版本的VPlayer由设计转入开发阶段,预计开发周期为一个月,这也意味着新版本的Vitamio将随之发布,开发者们可以和本系列文章一样,先开发其他功能.本章内容为"在线视频播放列表& ...
- 使用Vitamio打造自己的Android万能播放器(3)——本地播放(主界面、播放列表)
前言 打造一款完整可用的Android播放器有许多功能和细节需要完成,也涉及到各种丰富的知识和内容,本章将结合Fragment.ViewPager来搭建播放器的主界面,并实现本地播放基本功能.系列文章 ...
- 使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放
前言 本章继续完善播放相关播放器的核心功能,为后续扩展打好基础. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://ove ...
- 使用Vitamio打造自己的Android万能播放器(1)——准备
前言 虽然Android已经内置了VideoView组件和MediaPlayer类来支持开发视频播放器,但支持格式.性能等各方面都十分有限,这里与大家一起利用免费的Vitamio来打造属于自己的And ...
- material design 的android开源代码整理
material design 的android开源代码整理 1 android (material design 效果的代码库) 地址请点击:MaterialDesignLibrary 效果: 2 ...
随机推荐
- mysql---union的使用方法
union的作用非常easy用来合并两条sql的结果集 语法: SQL1 UNION SQL2 现有一张价格表 要求:求出价格低于2000和价格高于3000的商品.不能用or和not between- ...
- linux中的硬连接和软连接
linux中的硬连接和软连接 linux中的硬连接和软连接 背景 连接 硬连接 软连接 example reference 背景 linux中的文件主要分3块, - 真正的数据 - 索引节点号(ino ...
- java 爬虫在 netbeans 里执行和单独执行结果不一样
在做内容測试的时候.发现我的爬虫(前些文章略有提及)在 netbeans 里面可以成功爬取网页内容,而单独执行时,给定一个 url,爬到的网页却与在浏览器里面打开 url 的网页全然不一样,这是一个非 ...
- HDU 1730 Northcott Game
简单的尼姆博弈.想到了非常easy! 就拿一行举例.怎么赢.? 就是死劲挨着对方移,当然假设本身就是挨着的,又轮到你移动了,那么对于这一行来讲.你就是输的!! 由此可见每一行的棋子起始距离就显得尤为重 ...
- iOS使用Instrument的Leaks查找代码内存泄露
Here are some tips for finding leaks in our project: 1. 打开Instruments调试工具控制栏, Xcode -> Open Dev T ...
- Ionic2集成ngx-datatable,ng2-tree第三方控件.md
1. 基本环境配置 1.1. 命令安装相应的依赖 1.2. 在Module定义中引入对应Module 1.3. 引入对应的CSS 2. 简单使用示例验证是否集成成功 2.1. ngx-datatabl ...
- Laravel 框架指定路由关闭 csrf
修改 app\Http\Middleware\VerifyCsrfToken.php 内容: <?php namespace App\Http\Middleware; use Closure; ...
- python爬虫批量抓取ip代理
使用爬虫抓取数据时,经常要用到多个ip代理,防止单个ip访问太过频繁被封禁.ip代理可以从这个网站获取:http://www.xicidaili.com/nn/.因此写一个python程序来获取ip代 ...
- Android NDK课程录制完毕上线
近期依据公司安排,录制了Android NDK开发的内容,总体课程能够在www.iotekclass.com上看到.兴许会慢慢的用blog把这些内容展示出来. 此课程大纲例如以下: 第一章 NDK简单 ...
- WebGoat学习(一)--环境搭建
参考https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project https://github.com/WebGoat/WebGoat ...