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递归读取内存所有的视频文件并分类,可以学习到justfromflatMapgroupByfilter等Rxjava操作符,相对别的app我用到的操作符相对还算多的。
- 学习到retrofit2.0的使用,结合Rxjava做网络请求。
- 离线缓存,可以学习到离线数据缓存策略,以及缓存工具的使用。
- BaseActivityBaseFragmentBaseRecyclerViewAdapterBaseRecyclerViewHolder的封装。
- Material Design和android5.0以后的新控件使用

4.依赖库:

    //FloatingActionMenucompile 'com.github.clans:fab:1.6.4'//retrofitcompile '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 + Rxandroidcompile 'io.reactivex:rxandroid:1.2.0'compile 'io.reactivex:rxjava:1.1.5'//blurviewcompile 'com.eightbitlab:blurview:1.0.2'//photoviewcompile 'com.bm.photoview:library:1.4.0'//picassocompile 'com.squareup.picasso:picasso:2.5.2'//umengcompile '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

基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器相关推荐

  1. Android 基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器aaa

    MDPlayer万能播放器 MDPlayer,基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器,可以播 ...

  2. Android音视频学习系列(七) — 从0~1开发一款Android端播放器(支持多协议网络拉流本地文件)

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  3. Android万能播放器(基于FFmpeg+OpenSL+OpenGL+Mediacodec)

    VR_Video-Play 万能播放器 支持 x86 cpu arm架构 Android 基于:FFmpeg+OpenSL+OpenGL+Mediacodec 的视频播放SDK,可播放网络.本地和广播 ...

  4. Android音视频学习系列(十) — 基于FFmpeg + OpenSL ES实现音频万能播放器

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  5. Android中RxJava+Retrofit2.0+MVP模式的整合

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/50781360 转载请标明出处:http:// ...

  6. Vue2.0 的 Material Design UI 组件库 Muse-UI

    Muse-UI 基于 Vue2.0 的 Material Design UI 组件库 安装 npm install muse-ui --save 使用 import Vue from 'vue' im ...

  7. muse-ui.css_Muse UI:适用于Vuejs 2.0的Material Design UI库

    muse-ui.css Vuejs 2.0的Material Design UI库 (Material Design UI library for Vuejs 2.0) A Vue 2.0 and M ...

  8. android5.0后新特性修改标题头,Android5.0中Material Design的新特性

    Material Design简介 Material Design是谷歌新的设计语言,谷歌希望寄由此来统一各种平台上的用户体验,Material Design的特点是干净的排版和简单的布局,以此来突出 ...

  9. android6.0进入Material Design时代

    Material Design 官方Material Design详细介绍文档:http://www.google.com/design/spec/material-design/introducti ...

最新文章

  1. Apache Doris在美团外卖数仓中的应用实践
  2. Python 基础语法(一)
  3. 动态锁定(每个帧特征捕捉实现)Python
  4. 使用ajax+php+mysql实现数据库定时刷新
  5. java redis 数据自过期_Java架构-Redis的内存回收策略和Key过期策略,看这篇就够了...
  6. python数据清理_Python-数据清理
  7. 在InternetExplorer.Application中显示本地图片
  8. PAT乙级(1030 完美数列)
  9. linux下监控磁盘空间脚本
  10. Docker大书房:什么是Docker?怎么用?
  11. android取消自动获取焦点,Android 如何让EditText不自动获取焦点 (转)(示例代码)...
  12. java两天速成_JAVA速成
  13. 南京大学俞扬教授:强化学习真实环境不好用?那就模拟器来凑!
  14. 计算机软件的初始密码,怎么设置电脑软件密码
  15. Win7下面更改屏幕旋转快捷键的方法
  16. avformat_seek_file函数介绍
  17. windows10家庭版升级为专业版
  18. 关于Java平台无关性你该知道这些
  19. 将阿拉伯数字转为中文大写读法
  20. error: OpenCV(4.1.2) ..\modules\imgcodecs\src\loadsave.cpp:715: error: (-215:Assertion failed) !_img

热门文章

  1. vscode中设置用cnpm安装包
  2. PHP使用qrCode生成二维码图片
  3. OPPO Find X兰博基尼版到底有多受欢迎?网友:就是加价也要买
  4. Android自动开关机实现
  5. Python 字符串每隔两个加入空格
  6. 小米AI平台MACE的构建和部署
  7. 老妈玩拇指锁屏,每个月居然比我挣得多!
  8. 计算机开机免密码,电脑开机不用密码就可以自动打开,怎么回事?
  9. mysql一直拒绝登录_mysql 拒绝登录解决
  10. http1 和 http2 的区别