2016-01-22 17 views
1

有沒有辦法讓媒體文件(audio/video)在cardview佈局中運行?我想在card layout內預覽一個video文件,當用戶點擊卡片時,video/audio被全屏播放並播放,就像Facebook的提要一樣。在CardView佈局中運行媒體文件

回答

12

爲了得到那樣的功能,你必須解決幾個問題:

  1. ,因爲它正在擴大SurfaceView你不能在列表使用VideoView,如果回放是和用戶啓動滾動,視覺效果看起來像視頻試圖抓住滾動。因此,您需要一個基於其他內容的特殊VideoView,例如TextureView

  2. 管理視頻播放狀態:爲了 開始/停止播放,我們需要調用的MediaPlayer.class的幾種方法:

    setDataSource() 
    prepare() 
    start() 
    stop() 
    reset() 
    release() 
    

    這些方法是直接調用硬件,它可能需要一些時間在硬件將回應之前。所以我們不能在UI線程中調用它。它會阻塞超過16毫秒,所以用戶會看到一個滯後的滾動列表。我們必須從後臺線程調用它。

  3. 您需要在運行時跟蹤屏幕上的哪個視圖處於活動狀態並且應該播放此視圖。


我已經創建了一個名爲VideoPlayerManager一個開源項目。

它被詳細記錄和一些基本流程在演示應用程序中處理。它還沒有準備好生產,但如果你需要一些關於如何獲得這種功能的參考,你可以在那裏找到它。

P.S.關於CardView:這是一個常規視圖。您可以將視頻播放器放入其中並使用CardView播放視頻。

+0

你可以在這裏閱讀關於實現:https://medium.com/@v.danylo/implementing-video-playback-in-a-scrolled-list-listview-recyclerview-d04bc2148429 –