仿:Android - 微信 - 朋友圈 - 小視頻播放,多4句廢話算我輸

做者:林冠宏 / 指尖下的幽靈 掘金:juejin.im/user/587f0d… 博客:www.cnblogs.com/linguanh/ GitHub : github.com/af913337456…git

爲了您的直觀體驗,請務必看完下面 gif 圖,源碼 gitHub 連接在其以後。github

作這個東西的目的是: 完善畢設: 一個沒依賴各類雲,而使用C++和Golang作後端的仿微信APP後端


爲了不你們浪費時間,直接先看下面的 Gif,略大,請耐心點。看完後,若你以爲會須要到,那麼就請聽我繼續。緩存

git顯示,略大,請耐心微信

demo

GitHub 連接

廢話一句:這個顯示只是其中一部分,重點是:FFmpeg + Camera 的錄製部分,因此,你的星星(star)也是一種更新通知 (我通知你)。網絡

github.com/af913337456…ide

功能點

若是你看完上面的gif圖,你會發現以下幾點功能 (Function list):this

1,直觀的3d

  • 播放前,能夠顯示封面縮略圖
  • 播放時,若是尚未本地緩存,那麼先進行下載
  • 下載過程當中,顯示圓型區域進度效果
  • 下載後,播放完畢後能夠循環播放
  • 播放已經播放過的,是具有本地緩存的,也就是既能播放網絡,也能播放本地

2,隱藏的code

  • 低耗電量
  • 低內存佔用
  • 無延遲圖與視頻切換
  • 低耦合,高內聚,幾行代碼接入,一共3個類

解析

直觀的功能點,幾乎就是和新版微信的同樣,從朋友圈點擊一個視頻,而後進入到一個 Activity 頁面進行加載以及播放。

爲何低耗電量和低內存佔用?

由於採用的是 SurfaceView 而不是 TextureView,圖與視頻切換的切換延遲也是這個緣由。

在你的 Activity 中這樣使用

這樣就會以 id 爲 activity_main 的 Relativelayout 爲父容器裝載。 由於要避免內存泄露,因此你還須要作完下面的一些步驟,不會超過6行代碼。

技術點 (能夠不看)

1,下載操做:

自定義 AsyncTask。PS:AsyncTask 比 Thread + handler 重量級卻方便(回調進度),可是,若是是 即放即用,結束即銷燬,那麼,no need to think about this;

2,視頻播放組合拳: surfaceView + mediaPlayer

surfaceView 用做顯示,mediaPlayer 用來解碼 二者關係: mediaPlayer 綁定 surfaceView。

爲何不用 TextrueView?
3,進度區域

自定義 View,3個畫筆繪製,一個圓,一個邊,一個扇區。

相關文章
相關標籤/搜索