我有一个片段,有一堆Android视图来播放各种媒体项目 - 图像,mp4视频,pdf。
我想支持YouTubePlayerView
支持播放YouTube视频。我知道使用YouTubePlayerFragment,但我想将YouTubePlayerView
放在正常的片段中。我如何实现这一目标?
答案 0 :(得分:1)
本周我有同样的问题。我的应用中只有1 Activity
,其他所有内容都是片段,所以我不想做文档扩展YouTubeActivity
只是为了使用YouTubePlayerView
的方法。
相反,如果您继续阅读文档,请说明YouTubeFragment contains a YouTubePlayer
。所以我最终将片段视为一个视图,并在<fragment>
的布局中明确地添加了MyFragment
标记。在onCreateView
MyFragment
期间,YouTubeFragment会为我实例化,然后我可以参考YouTube片段和 YouTubePlayer。
来自MyFragment
&#39; s onCreateView
我称之为帮助initYouTube()
。
注意:您真正想要的是YouTubePlayer
,而不是YouTubePlayerView
,就像许多编程任务一样,有很多方法可以完成工作。然后我保留对播放器和YT片段的引用,以便以后在MyFragment
的生命周期中使用。
private void initYouTube() {
if (youTubePlayerFragment == null) {
youTubePlayerFragment = (YouTubePlayerFragment) getFragmentById(R.id.youtube_frag);
youTubePlayerFragment.initialize(getString(R.string.api_key), new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer player, boolean wasRestored) {
Log.i("Detail","YouTube Player onInitializationSuccess");
// Don't do full screen
player.setFullscreen(false);
if (!wasRestored) {
youTubePlayer = player;
cueVideoIfNeeded();
}
}
@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
Log.i("Detail", "Failed: "+youTubeInitializationResult);
if (youTubeInitializationResult.isUserRecoverableError()) {
youTubeInitializationResult.getErrorDialog(getMainActivity(), RECOVERY_DIALOG_REQUEST).show();
} else {
callToast(youTubeInitializationResult.toString(), true);
}
}
});
}
}
YouTubeFragment XML,嵌套在MyFragment
的布局XML中。
<RelativeLayout>..../>
<fragment
android:id="@+id/youtube_frag"
android:name="com.google.android.youtube.player.YouTubePlayerFragment"
android:layout_below="@id/detail_animal_action_relative_layout"
android:layout_width="match_parent"
android:layout_height="150dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
/>
<TextView>...../>