在一个片段中使用YouTubePlayerView

3
我有一个包含多种媒体项目(图片、mp4视频、pdf)的 Android 视图片段。我想支持 YouTubePlayerView 播放 YouTube 视频。我知道可以使用 YouTubePlayerFragment,但我想在普通片段中放置 YouTubePlayerView。我应该如何实现?
1个回答

1
我这周也有同样的问题。我的应用只有1个Activity,其他都是片段,所以我不想采用扩展YouTubeActivity的方法来使用YouTubePlayerView。相反,如果你继续阅读文档,会发现YouTubeFragment包含一个YouTubePlayer。因此,我将该片段视为视图,并在MyFragment的布局中明确放置了一个<fragment>标签。在MyFragmentonCreateView期间,YouTubeFragment会被实例化,然后我可以获得对YouTubeFragmentYouTubePlayer的引用。
MyFragmentonCreateView中调用这个帮助程序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>...../>

最终产品会给我类似这样的东西。 在此输入图片描述

你能否也添加你的片段布局XML文件? - jay
好的,已添加。希望这能帮助你澄清问题。如果您同意,请标记为已接受。 - kev
仅当动态添加时,片段中的片段才能起作用。 - jay
嵌套静态片段对我的需求很好用,而且完全可行。一旦在我的布局中,我就不需要移除/替换它。如果您正在考虑这样做,那么我同意动态添加会更好。祝你好运! - kev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接