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