Android YouTubeplayer方向改变时出现碎片黑屏
我正试图继续播放YouTubePlayerFragment的方向变化 代码如下所示:Android YouTubeplayer方向改变时出现碎片黑屏,android,video,youtube-api,android-youtube-api,Android,Video,Youtube Api,Android Youtube Api,我正试图继续播放YouTubePlayerFragment的方向变化 代码如下所示: @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle bundle) { FrameLayout frameLayout = new FrameLayout(getActivity()); populateViewForOrientation(inflater, frameL
@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-视频出现。
我试着为当前视频调用暂停
和播放
,但没有效果。
我没有尝试使用YouTubePlayerView
,因为我使用moxy
,所以我需要处理片段
upd
它看起来像是在创建自定义视图时使用YouTubePlayerFragment
,使其具有更稳定的行为(然后删除addview)。但黑屏问题仍然存在
在这种情况下,可以通过以下方式恢复视频:
mYouTubePlayer.loadVideo(url);
...
public void onLoaded(String s) {
mYouTubePlayer.seekToMillis(mills);
但是重新加载视频没有任何意义,我试图避免这种情况-延迟出现基于此,请确保在还原过程中调用onCreate()
而不是显式创建时,您正在初始化onCreate()
中的YouTubePlayerView
。在这里,包含片段的活动不需要扩展任何特殊的基类
您还可以检查此相关线程:快速简便的解决方案是将以下内容添加到您的清单中的视频活动中:
android:configChanges="orientation|keyboard|keyboardHidden|screenSize"
我有一个应用程序,用它来制作视频,效果很好。在方向改变时,所有内容都正确地进行了布局,活动和片段实例不会被拆下,从而可以无缝地继续播放
如果希望在保留片段实例的同时拆除/重新创建活动,请重新阅读setRetainInstance()的文档
要使其正常工作,您需要注意一些细微差别:
使用此功能,它将在方向更改后继续播放片段我找到的唯一有效方法是手动处理屏幕方向: 1) 添加到您的活动中:
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
2) 在活动课上:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
someFunctionToHandleOrienttion();
}
你不应该夸大新的布局。只需删除并重新创建/添加所需的所有内容,除了
youtubeframe
,即可使land layout看起来像您想要的。这有点棘手和奇怪,但在其他情况下,你得到的是黑屏而不是视频 谢谢你的回答。我已经尝试了setRetainInstance
(configChanges
已经设置好)。但结果是一样的:我可以听声音,但视频是黑色的,直到我调用loadVideo
查看下一项。谢谢你的回答,我会查看教程。嗯,我没有在onCreate
中创建它,因为我需要通过用户操作在片段上创建视频帧。我需要检查这是否是原因。即使我面临同样的问题,你有解决方案吗。你好@pooja。我目前的解决方案是不膨胀新的布局。我手动处理方向更改,删除和添加以编程方式更改位置的组件,而不接触youtube框架:)