YouTubePlayerView片段

时间:2016-07-24 18:24:50

标签: android youtube-api android-youtube-api

我有一个片段,有一堆Android视图来播放各种媒体项目 - 图像,mp4视频,pdf。

我想支持YouTubePlayerView支持播放YouTube视频。我知道使用YouTubePlayerFragment,但我想将YouTubePlayerView放在正常的片段中。我如何实现这一目标?

1 个答案:

答案 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>...../>

最终产品给我这样的东西。 enter image description here