• Stars
    star
    466
  • Rank 94,105 (Top 2 %)
  • Language
    Java
  • Created over 8 years ago
  • Updated over 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🔥 MDPlayer,Android万能播放器,支持视频大小窗口无缝切换,基于ijklayer+MVP+RxJava+Retrofit+Material Design开发。

MDPlayer万能播放器

MDPlayer,基于ijkplayer+Rxjava+Rxandroid+Retrofit2.0+MVP+Material Design的android万能播放器,可以播放本地和在线视频,可以浏览宅男杀手妹纸图片,UI设计遵循 Material Design。

作者博客:http://blog.csdn.net/u010072711


MDPlayer 2.0最新GIF效果图:

Alt text

UI浏览:

Alt text Alt text Alt text Alt text Alt text Alt text Alt text Alt text

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.依赖库:

    //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.知识点引导:

7.下版本改进

  • 下版本希望改进model层,对数据操作更加简洁
  • 增加视频播放历史记录
  • 自定义视频播控
  • 使用注解替代findViewById

More Repositories

1

GoogleArchitectureDemo

🔥 基于谷歌最新MVVM实现组件化架构,使用dataBinding、lifecycle、retrofit2、rxjava2、okhttp、fresco、ARouter。
Java
732
star
2

ijkplayer-android-demo

对最新的ijkplayer编译后进行封装,支持armv5、armv7a、x86架构32位和64位的设备,方便集成到我们的开发项目中来。
Java
132
star
3

BriskTVLauncher

一款AndroidTV桌面,可内存加速,应用App管理卸载,还带有视频直播功能,基于ijkplayer播放器!
Java
109
star
4

AndroidLearn

Android Custom Views
Java
71
star
5

BitmapKit

🔥 Android bitmap clip, scale, blur, rotate, shadow, shader and so on. java and jni realize. 图片裁剪、缩放、模糊、旋转、阴影、渐变的java和jni实现。
Java
57
star
6

FlymeTabStrip

Flyme6 ViewPager TabStrip
Java
23
star
7

DxKit

基于ASM + transform 实现AOP功能的Kit,支持查看点击view的信息,比如类名,自己和父类的id。双击粘连拦截。为指定方法添加try catch并根据方法签名返回默认值,拦截回调可以自定义并拓展功能。更多功能持续更新中...
Java
18
star
8

AndroidTVFocusWidget

AndroidTVFocusWidget,AndroidTV盒子控件收藏,主要是焦点控件,FocusLinearLayout,FocusViewPager,FocusListView and so on
Java
16
star
9

GoStudy

Android coder GoStudy
Go
9
star
10

GradleProguardJar

使用Gradle自动化打包混淆jar包
4
star
11

AndReservoir

Android study reservoir!aidl、binder、thread、http、scoket、aop、jni.
Java
2
star
12

LearnJavaWeb

java web learn
JavaScript
2
star
13

FragmentSwitchDemo

使用ListView作为SwitchBar来切换Fragment,可以创建指定Fragment模板,Fragment的切换不销毁。
Java
2
star
14

MDPlayer_Kotlin

MDPlayer powered by Kotlin
Kotlin
1
star
15

CalendarWeight

一个漂亮的自定义的日历控件,可以选择日期
Java
1
star
16

MediaCodec8FFmpeg

MediaCodec and FFmpeg project
C
1
star
17

AndroidTest

Android开发中对自己的一些知识盲点进行修补
Java
1
star
18

das

dxx app web server
Java
1
star