轉自:這位大神
介紹
播放器寫法參考系統VideoView,系統的寫法比較權威很有參考價值
在VideoView基礎上添加了常見的手勢滑動、鎖屏功能等
將系統控件中的播放器部分抽離出來,封裝成了一個單獨的類BDVideoPlayer,可以自行替換成vitamio、ijk等其他播放器
播放器的控制面板、錯誤提示、手勢滑動時顯示的樣式都單獨封裝成View,可按需自己修改
播放器功能封裝成了model,代碼獨立,引用修改都比較方便
Demo中的VideoDetailActivity頁面演示了如何使用本播放器
Github地址
https://github.com/boredream/VideoPlayer
歡迎start和follow~
基礎功能
- 播放視頻
- 支持本地視頻、網絡視頻
- 播放、暫停
- 暫停時,面板的顯示不會有延遲消失效果,恢復播放時才有
- SeekTo進度拖動
- 操作面板顯示、延遲消失
- 點擊視頻畫面會顯示、隱藏操作面板
- 顯示后不操作會3秒后自動消失
- 播放器回調
- 將系統MediaPlayer所有回調進行統一封裝,回調方法名和參數保持一致,減少學習成本
- 新增播放器當前狀態回調,具體狀態參考系統MediaPlayer生命周期圖
- 新增loading狀態回調,規則為"系統info回調的加載中"、"Preparing狀態"時顯示;"系統info回調的加載結束 "、"IDEL狀態"、"ERROR狀態"、"PREPARED狀態"時隱藏
進階功能
-
橫豎屏切換
- 豎屏時,操作面板底部有全屏按鈕,點擊切換到橫屏全屏狀態
- 橫屏時,隱藏全屏按鈕,點擊返回會變回豎屏狀態
- 切換全屏時,隱藏statusbar;豎屏時恢復原有狀態
- 豎屏時,頂部返回按鈕會一直顯示;橫屏時頂部返回按鈕隨控制面板的顯示狀態
-
手勢操作
- 屏幕左側上下滑動調節亮度
- 屏幕右側上下滑動調節音量
- 屏幕底測左右滑動調節進度
-
鎖屏
- 豎屏不提供鎖屏按鈕,橫屏全屏時顯示
- 鎖屏時隱藏控制面板除鎖屏按鈕外其他所有控件
- 鎖屏時,返回鍵不做任何處理
- 鎖屏時,屏蔽手勢處理
- 鎖屏按鈕屬于控制面板一部分,所以顯示、隱藏、延遲自動消失邏輯隨面板
-
error提示和重試功能
- 錯誤時會在視頻上方添加一層包含錯誤信息的蒙版,還有一個重試按鈕。有多個錯誤類型,如下
- 視頻數據錯誤。包含視頻地址、標題等的javabean為空時出現。點擊重試重新請求業務代碼
- 視頻資源播放錯誤。視頻地址未加載成功。點擊重試進行視頻restart操作
- 非wifi網絡錯誤。手機流量下嘗試播放視頻,提示失敗。點擊按鈕允許流量繼續播放
- 無網絡錯誤。手機未聯網時提示錯誤。點擊重試時根據當前網絡狀態進行錯誤提示或重新加載視頻
-
網絡處理
- 切換到手機流量或無網絡時,作為上述error情況中最后兩條一樣邏輯處理
- 手機流量的播放,在一次播放過程中,如果允許過一次則后續不再提示錯誤
- BDVideoView中會注冊一個網絡變化監聽廣播,在網絡變更時進行對應處理
截圖
豎屏狀態
播放中切換到無網絡時提示錯誤
橫屏狀態
手勢滑動控制進度
鎖屏和loading