2010-05-30 182 views
2

我試圖在另一個視頻視圖上播放videoview。第一個視頻視圖暫停,而第二個正在播放。它似乎工作,但沒有第二個視頻出現在屏幕上(雖然我聽到音頻,看到通常會出現在頂部的控件)。我認爲這是某種訂單問題。有什麼想法嗎。順便說一下,在主視頻視圖頂部顯示其他視圖並讓視頻填充背景時,我沒有任何問題。Android VideoView同時播放2個視頻

回答

3

這是行不通的 - VideoView是特殊的,它在正常視圖中打出一個洞,允許直接訪問顯示像素(或者,在android中,'Surface' - VideoView是SurfaceView的子類)。你不能將兩個SurfaceView放在彼此之上 - 第一個抓住像素(Surface)的將會「擁有」它。 (見SurfaceHolder.Callback.surfaceCreated()/ surfaceDestroyed())

在SurfaceView 的頂部其它視圖做工作,這是因爲框架將構成上表面的頂部正常視圖的顯示位。它不能用另一個VideoView(即SurfaceView)來完成,因爲沒有任何東西可以編寫。

1

<VideoView android:id="@+id/videoView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/> 
<VideoView android:id="@+id/videoView2" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"/> 

時videoView2開始播放videoView1無形的setvisibilty 。 然後您可以在需要時使其可見。

0

我不知道這是目前幫助,但我設法得到類似於你想要什麼東西......

我需要窩在SurfaceView頂部的VideoView;只要它們不重疊100%就可以工作。 (我的意思是,我的表面視圖是整個屏幕,而videoview只是屏幕的一小部分)

事情是 - 因爲你不能組成SurfaceViews,第一個抓取像素是將被顯示。直觀性會促使你在優先視圖中對Z進行排序 - 在XML中不太重要的視圖之後 - 但正如我之前所說的,第一個抓住像素的方法仍然存在,因此請確保定義較小的視圖FIRST,然後覆蓋它與更大的一個。

這將導致這樣的行爲,即較小(在我的情況下,預覽視圖)獲取所述X * Y像素,然後獲取'背景'surfaceview(根據XML應該在其之上)佔據其餘部分並忽略較小的表面。

我不太清楚處理來自這兩個事件的事件,但我只需要在這兩個視圖中播放流,而不會對由這兩個組件產生的任何類型的點擊/事件作出反應,但可能會發現如果你遵循這條路線 - 更大的視圖將攔截在較小的視圖區域中進行的所有點擊(因爲它根據XML在最上面),所以也許你必須在創建時以編程方式將它移動到頂部。

希望它有幫助。

編輯: 雖然......它就像它只是一次。這真的是一項進展中的工作。當從任何活動回來,有什麼我可以做,以防止更大的觀點,聲稱一切:/

1

使用Thread同時控制視頻

0

,你可以在上面videoview b。添加videoview一個,這樣,

 parentview.removeview(a); 
    parentview.removviewe(b); 
    parentview.addview(a); 
    parentview.addview(b); 
parentview.invalidate(); 

Ti爲我工作。我希望它可以幫助。