MDPlayer
Introduction: 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的 android 万能播放器,可以播放本地和在线视频,可以浏览宅男杀手妹纸图片,UI 设计遵循 Material Design。
Tags:
Rxjava-MDPlayer,基于ijkplayer
+Rxjava
+Rxandroid
+Retrofit2.0
+MVP
+Material Design
的 android 万能播放器,可以播放本地和在线视频,可以浏览宅男杀手妹纸图片,UI 设计遵循 Material Design。
作者博客:http://blog.csdn.net/u010072711
MDPlayer 2.0 最新 GIF 效果图:
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