2017-08-05 137 views
1

我正試圖繼續玩YouTubePlayerFragment方向更改。YouTubePlayerFragment黑色方向更改屏幕

的代碼如下所示:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { 
    FrameLayout frameLayout = new FrameLayout(getActivity()); 
    populateViewForOrientation(inflater, frameLayout); 
    return frameLayout; 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    LayoutInflater inflater = LayoutInflater.from(getActivity()); 
    populateViewForOrientation(inflater, (ViewGroup) getView()); 
} 

private void populateViewForOrientation(LayoutInflater inflater, ViewGroup viewGroup) { 
    viewGroup.removeAllViewsInLayout(); 
    rootView = inflater.inflate(getLayoutResId(), viewGroup); 
    ButterKnife.bind(this, rootView); 

    if (frYTube != null) { 
     FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
     transaction.replace(R.id.frame, frYTube); 
     transaction.commitAllowingStateLoss(); 
    } 
} 

片段代替(我看到它的文本),並正在播放的音樂,但不是視頻 - 黑屏。我如何處理它?是否有可能回到視頻?順便說一句,如果旋轉後下一個視頻是oppenes - 視頻出現。 我試圖給目前的視頻撥打pauseplay - 它沒有幫助。 我還沒有嘗試YouTubePlayerView因爲我使用moxy所以我需要處理片段。

UPD

它看起來像創建自定義視圖與YouTubePlayerFragment裏面有更穩定的行爲(和刪除添加視圖,則)。但黑屏問題依然存在。

有可能恢復的視頻在這種情況下有:

mYouTubePlayer.loadVideo(url); 
... 
public void onLoaded(String s) { 
    mYouTubePlayer.seekToMillis(mills); 

,但沒有任何意義太重裝視頻中,我試圖避免這種情況 - 延遲出現

+1

你有解決方案,即使我面臨同樣的問題。 – pooja

+0

你好@pooja。我目前的解決方案是不擴大新的佈局。我手動處理方向更改,刪除和添加逐步改變位置的組件,而不是觸摸YouTube框架:) – user5599807

回答

0

只有我的方式後,發現它的工作原理是手動處理屏幕方向:

1)添加到您的活動:

android:configChanges="keyboard|keyboardHidden|orientation|screenSize" 

2)在活動類:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    someFunctionToHandleOrienttion(); 
} 

,你不應該誇大新的佈局。只需刪除並重新創建/添加除youtubeframe以外的所有需求,以使您的土地佈局看起來你想要的。這有點棘手和奇怪,但在其他情況下,你有黑屏而不是視頻。

1

從這個post基礎,在還原期間調用onCreate()而不是顯式創建時,請確保您正在初始化YouTubePlayerViewonCreate()。這是一個tutorial,其中包含片段的活動不需要擴展任何特殊的基類。

您還可以檢查此相關的主題:Screen orientation not working with youtubePlayerfragment

+0

謝謝你的答案,我會檢查教程。嗯,我沒有在'onCreate'中創建它,因爲我需要通過用戶操作在片段上創建視頻幀。我需要檢查是否可能是原因。 – user5599807

1

快速和簡單的解決方案是將以下內容添加到您的視頻活動,在您的清單:

android:configChanges="orientation|keyboard|keyboardHidden|screenSize" 

我有一個使用這個應用程序對於一個視頻,它工作得很好。所有事情都可以根據方向的變化適當地進行佈置,並且活動和片段實例不會被拆除,從而無縫地繼續玩耍。

如果希望在保留片段實例的同時拆除/重新創建活動,請重新閱讀setRetainInstance()的文檔。

還有,你需要知道得到這個正常工作的一些細微差別: https://developer.android.com/reference/android/app/Fragment.html#setRetainInstance(boolean)

利用這一點,將繼續播放該片段的方向變化

+0

謝謝你的回答。我試過'setRetainInstance'('configChanges'已經設置好了)。但結果相同:我可以聽聲音,但視頻是黑色的,直到我爲下一個項目調用'loadVideo'。 – user5599807