2012-12-23 25 views
16

我正在使用YouTube Android播放器API並希望在YouTubePlayerFragment之上覆蓋視圖以便在播放視頻上方顯示上下文信息和控件。覆蓋YouTubePlayerFragment或YouTubePlayerView上方的視圖會導致播放立即暫停

不幸的是,無論何時在佈局層次結構中播放器上方存在一個或多個視圖時,播放在YouTubePlayerFragmentYouTubePlayerView中都無法正常工作。在立即暫停之前播放不到半秒。

的問題可以通過使用下面的佈局附帶的SDK簡單PlayerFragment演示轉載:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <fragment 
     android:name="com.google.android.youtube.player.YouTubePlayerFragment" 
     android:id="@+id/youtube_fragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="@android:style/TextAppearance.Small" 
     android:layout_alignParentTop="true" 
     android:text="@string/playerfragment_text"/> 

</RelativeLayout> 

我試圖同時使用FrameLayoutRelativeLayout各種佈局配置,但問題始終是相同的。我意識到這個API已經發布爲「實驗性」,但如果這是一個已知的問題,它對於很多實現來說是一個相當主要的阻礙者。有沒有人有一個很好的解決方案或解決方法?

回答

15

傑夫 - 這個按設計工作。我們不支持任何YouTube播放器(包括YouTube Android播放器)之上的疊加層。檢測到覆蓋時,播放停止,並且日誌包含有助於調試問題的信息。 我們支持動作欄覆蓋圖,看看這個演示瞭解更多:https://developers.google.com/youtube/android/player/sample-applications#Overlay_ActionBar_Demo

+0

謝謝Jarek。這似乎是應該在文檔中更突出地提及的內容,並且可能在運行時更明確地進行處理。我可以在播放器上成功顯示一個對話框片段,並將其背景可繪製透明以達到所需的效果(多花點功夫),所以我不確定此設計限制試圖達到什麼目的。 –

+0

傑夫 - 疊加層目前與我們的ToS相抵觸,因此受到限制。我同意我們應該讓它更加突出,並且我們正在進行更新以更好地覆蓋它。 –

+0

@wjarek在發言時,YouTube播放器暫停後重疊視圖可以嗎? – eveliotc

4

Youtube播放器不允許任何視圖覆蓋它。只需使用setVisibility(View.GONE)對所有視圖進行疊加即可。

+2

是的,工作正常。但這不是讓YouTubePlayer正常工作的好方法。 –

0

您可以將播放器主題設置爲YouTubePlayer.PlayerStyle.CHROMELESS,然後在下面實現您自己的控件。

我有一個問題,我找不到一個好的資源,如何重新實現自定義佈局的搜索欄。

+0

即使有PlayerStyle.CHROMELESS,我也會得到相同的錯誤。 – Borzh

3

這是不可能的添加按鈕爲播放器上方覆蓋由谷歌規定,否則玩家將停止:

https://developers.google.com/youtube/android/player/reference/com/google/android/youtube/player/YouTubePlayerView

請注意,當影片播放時,這一觀點已經最低尺寸爲 200x110 dp。如果您將視圖縮小一些,視頻將自動停止播放 。此外,在播放視頻時,不允許將 視圖與其他視圖重疊。

該視圖不支持填充。爲了達到同樣的效果,請將 包裝在另一個ViewGroup中或給它留出空白。

YouTubePlayer也不支持填充。

要覆蓋您的視頻來看,我會建議你使用ExoPlayer, 這不是在Android SDK的一部分,但它是由谷歌建議,其中包括Android開發者文檔中:

http://google.github.io/ExoPlayer/

這也是很好的提及,Exoplayer用於YouTube的應用程序。

+0

嗨,是否可以使用ExoPlayer將文本放在播放器視圖中? – Rajesh

0

Volla !!我有一個場景,這個問題是在設備棒棒糖和以上,這是因爲狀態欄。我隱藏瞭解決狀態欄問題。只是寫它作爲答案,如果它可以幫助其他人:)