主流視頻用戶端核心代碼的實現

來源:互聯網
上載者:User

標籤:

Android原生的VideoView的樣式真心弱爆了,但是擁有巨大使用者量的網易新聞用戶端居然使用的就是這個,真心服了網易的產品經理。目前主流的視頻網站,國內的如優酷、馬鈴薯、愛奇藝、搜狐,國外的如最具代表性的youtobe,它們一同在移動互連網的浪潮下競逐,也都推出了對應的移動視頻用戶端。不知從何時起,他們推出的用戶端基本都統一了視頻播放介面的互動風格。當然這種互動的風格如此風靡,肯定有其內在的原因,那就是它讓用戶端更加迎合使用者的操作習慣,更加的智能。現在只要一看到視頻播放介面,總會不由自主的會用手指左右滑動螢幕,期待有特定的互動響應。

下面我們就簡單介紹下這種互動風格的幾大特徵。

1、播放介面不會固定橫屏或者豎屏,而是隨感應器自動旋轉螢幕,並且無縫的銜接播放的視頻

2、手指左滑螢幕,快退;手指右滑螢幕,快進

3、在左半屏,手指下滑,調低亮度;手指上滑,調高亮度;退出當前頁面,恢複亮度

4、同樣的有個Seekbar也可以調整進度,樣式一般自訂

5、視頻上面會有兩個遮罩浮層,一個在頂部,一個在底部;點擊螢幕,遮罩層會自動顯示,再點擊會自動隱藏

6、調整音量的Toast一般也是自訂的

7、視頻橫屏,全螢幕顯示

交代完幾點酷炫的共同特徵,我也正是朝著這幾個目標前進的。欣慰的是,所有的這些功能也都給實現了,代碼也都放在Github上了,可以先把玩下看看效果,相信會給你眼前一亮的感覺。尤其是那些正在飽受實現痛苦的同學,這時候看到你就爽了。先看下效果。

有朋友給建議說,多講點基礎和要點,要貼點代碼。我覺得建議很好,所以呢,代碼以後會少貼,想看源碼的話,直接去Github clone下來。如果你有好的想法,或者代碼哪裡寫的不盡如意,也歡迎大家提交pull request。

下面說幾點大家可能需要注意的地方。

一、為什麼需要重寫VideoView,原生的不好嘛?

VideoView,和WebView一樣,是Android中重量級的控制項,都需要時間去緩衝,大量的操作需要用在渲染上。所以可以想象他們對記憶體的壓力還是蠻大的,不過有Google大神們的Framework層的強力支援,開銷的事情基本不用上層程式員操心。VideoView作為如此重要的一個控制項,導致很多手機廠商都在對它進行自己的定製化修改,這也造就了VideoView的片段化。可能同一套的視頻代碼,在不同手機上的顯示的效果可能相去甚遠。而且原生的VideoView是不支援全屏播放的,而是視頻的大小為多少,展現在手機上的就有多大,超屏的話按照全屏等比例縮放。所以完全有必要寫出一套VideoView去做相容。

二、手指的互動是如何?的?

Android中判定手指位置和滑動距離可以通過兩種方式,一種是設定OnTouchListener的回調監聽,另一種是使用手勢監聽類GestureDetector,然後在OnGestureListener裡面做回調監聽。我採用的是第一種,通過判斷手指落下的位置和手勢的位移的不同,進而去實現不同的邏輯。

三、遮罩層自動隱藏如何?的?

預設進入視頻播放頁面,遮罩層是顯示的。當視頻播放開始,5秒鐘後,遮罩層會自動隱藏。當遮罩層不顯示的時候,點擊螢幕,遮罩層彈出,再點擊,就隱藏。顯示和隱藏都伴隨這動畫的執行,效果不錯。有人會說,簡單的定時器Timer不就搞定了嘛。我建議大家盡量在Android中編碼盡量少用Timer,可以選擇使用Handler的順延強制方法postDelayed(Runnable r, long delayMillis)方法。

四、橫豎屏切換的無縫對接的實現方式

出門右轉,查看曆史訊息《由Android旋轉螢幕說起》,看完你就瞭解了。


好了,今天的乾貨都到此為止。

源碼地址:https://github.com/JackCho/AndroidVideoView

如果覺得對你有所協助,歡迎大家訂閱我的公眾帳號——Android乾貨分享(ID:android_share)。下面是的二維碼,為你提供及時高質的Android乾貨。

主流視頻用戶端核心代碼的實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.