轉(zhuǎn)自:這位大神
介紹
播放器寫法參考系統(tǒng)VideoView,系統(tǒng)的寫法比較權(quán)威很有參考價(jià)值
在VideoView基礎(chǔ)上添加了常見的手勢滑動盾戴、鎖屏功能等
將系統(tǒng)控件中的播放器部分抽離出來寄锐,封裝成了一個(gè)單獨(dú)的類BDVideoPlayer,可以自行替換成vitamio、ijk等其他播放器
播放器的控制面板锐峭、錯(cuò)誤提示、手勢滑動時(shí)顯示的樣式都單獨(dú)封裝成View可婶,可按需自己修改
播放器功能封裝成了model沿癞,代碼獨(dú)立,引用修改都比較方便
Demo中的VideoDetailActivity頁面演示了如何使用本播放器
Github地址
https://github.com/boredream/VideoPlayer
歡迎start和follow~
基礎(chǔ)功能
- 播放視頻
- 支持本地視頻矛渴、網(wǎng)絡(luò)視頻
- 播放椎扬、暫停
- 暫停時(shí),面板的顯示不會有延遲消失效果具温,恢復(fù)播放時(shí)才有
- SeekTo進(jìn)度拖動
- 操作面板顯示蚕涤、延遲消失
- 點(diǎn)擊視頻畫面會顯示、隱藏操作面板
- 顯示后不操作會3秒后自動消失
- 播放器回調(diào)
- 將系統(tǒng)MediaPlayer所有回調(diào)進(jìn)行統(tǒng)一封裝铣猩,回調(diào)方法名和參數(shù)保持一致揖铜,減少學(xué)習(xí)成本
- 新增播放器當(dāng)前狀態(tài)回調(diào),具體狀態(tài)參考系統(tǒng)MediaPlayer生命周期圖
- 新增loading狀態(tài)回調(diào)达皿,規(guī)則為"系統(tǒng)info回調(diào)的加載中"天吓、"Preparing狀態(tài)"時(shí)顯示;"系統(tǒng)info回調(diào)的加載結(jié)束 "峦椰、"IDEL狀態(tài)"龄寞、"ERROR狀態(tài)"、"PREPARED狀態(tài)"時(shí)隱藏
進(jìn)階功能
-
橫豎屏切換
- 豎屏?xí)r汤功,操作面板底部有全屏按鈕物邑,點(diǎn)擊切換到橫屏全屏狀態(tài)
- 橫屏?xí)r,隱藏全屏按鈕滔金,點(diǎn)擊返回會變回豎屏狀態(tài)
- 切換全屏?xí)r色解,隱藏statusbar;豎屏?xí)r恢復(fù)原有狀態(tài)
- 豎屏?xí)r鹦蠕,頂部返回按鈕會一直顯示冒签;橫屏?xí)r頂部返回按鈕隨控制面板的顯示狀態(tài)
-
手勢操作
- 屏幕左側(cè)上下滑動調(diào)節(jié)亮度
- 屏幕右側(cè)上下滑動調(diào)節(jié)音量
- 屏幕底測左右滑動調(diào)節(jié)進(jìn)度
-
鎖屏
- 豎屏不提供鎖屏按鈕,橫屏全屏?xí)r顯示
- 鎖屏?xí)r隱藏控制面板除鎖屏按鈕外其他所有控件
- 鎖屏?xí)r钟病,返回鍵不做任何處理
- 鎖屏?xí)r萧恕,屏蔽手勢處理
- 鎖屏按鈕屬于控制面板一部分,所以顯示肠阱、隱藏票唆、延遲自動消失邏輯隨面板
-
error提示和重試功能
- 錯(cuò)誤時(shí)會在視頻上方添加一層包含錯(cuò)誤信息的蒙版,還有一個(gè)重試按鈕屹徘。有多個(gè)錯(cuò)誤類型走趋,如下
- 視頻數(shù)據(jù)錯(cuò)誤。包含視頻地址噪伊、標(biāo)題等的javabean為空時(shí)出現(xiàn)簿煌。點(diǎn)擊重試重新請求業(yè)務(wù)代碼
- 視頻資源播放錯(cuò)誤氮唯。視頻地址未加載成功。點(diǎn)擊重試進(jìn)行視頻restart操作
- 非wifi網(wǎng)絡(luò)錯(cuò)誤姨伟。手機(jī)流量下嘗試播放視頻惩琉,提示失敗。點(diǎn)擊按鈕允許流量繼續(xù)播放
- 無網(wǎng)絡(luò)錯(cuò)誤夺荒。手機(jī)未聯(lián)網(wǎng)時(shí)提示錯(cuò)誤瞒渠。點(diǎn)擊重試時(shí)根據(jù)當(dāng)前網(wǎng)絡(luò)狀態(tài)進(jìn)行錯(cuò)誤提示或重新加載視頻
-
網(wǎng)絡(luò)處理
- 切換到手機(jī)流量或無網(wǎng)絡(luò)時(shí),作為上述error情況中最后兩條一樣邏輯處理
- 手機(jī)流量的播放技扼,在一次播放過程中伍玖,如果允許過一次則后續(xù)不再提示錯(cuò)誤
- BDVideoView中會注冊一個(gè)網(wǎng)絡(luò)變化監(jiān)聽廣播,在網(wǎng)絡(luò)變更時(shí)進(jìn)行對應(yīng)處理