Android 使用 Youtube 播放器视频和 appcompat

Android use Youtube player video and appcompat

我想知道是否有办法既使用 YouTubeBaseActivity 又享受 AppCompatActvity 的好处。

主要思想是在 dialogFragment 中播放 youtube 视频。

有什么想法吗?

至少不需要扩展 YouTubeBaseActivity,但通常根本没有必要。推荐的方法是让您的 Activity 扩展 AppCompatActivity 并在您的 activity.

中使用 YouTubePlayerSupportFragment

直接来自docs

A fragment that contains a YouTubePlayerView. Using this fragment is the preferred way of playing YouTube videos because your activity does not need to extend an activity provided by the library, as is the case with using the YouTubePlayerView directly`.

虽然在对话框中播放 YouTube 视频可能很棘手,或者根本不可能。最好的方法是使用带有对话框主题/透明背景的 Activity 来模仿对话框的外观(同时仍然是 activity)。

我终于找到了如何在对话框中播放嵌入的 YouTube 视频。

只需为您的对话框创建一个自定义布局并在扩展 DialogsFragment 的 class 中扩展它。

在此自定义布局中,您添加一个框架布局,它将成为一个 youtubefragment 容器。 不要忘记让您的 Dialog 实现 YouTubePlayer 接口,这就快完成了。

最后的技巧是使用 getChildFragmentManager 而不是 supportFragmentManager 来处理在您的容器中添加 youtube 播放器片段的事务。

这是您的对话框的一些代码 class:

public class AddMarkerFragment extends DialogFragment implements YouTubePlayer.OnInitializedListener{


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    Log.d("ADDMARKERLIFECYCLE","ONCREATE");
    final View view = inflater.inflate(R.layout.fragment_add_marker, container, false);

        prepareYoutubePlayer(view);
}

private void prepareYoutubePlayer(View view) {
    youtubePlayerFragment = (YouTubePlayerSupportFragment)
            getActivity().getSupportFragmentManager().findFragmentById(R.id.youtube_fragment);
    if (youtubePlayerFragment == null) {
        youtubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
        getChildFragmentManager().beginTransaction().add(R.id.youtube_fragment, youtubePlayerFragment).commit();
    }
    youtubePlayerFragment.initialize(YoutubeConnector.KEY, this);
}
@Override
public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean wasRestored) {

    if (!wasRestored) {
        youTubePlayer.loadVideo(footage.getYoutubeID());
        this.youtubePlayer=youTubePlayer;
      /*  youTubePlayer.setShowFullscreenButton(false);
        youTubePlayer.*/
        youTubePlayer.setPlayerStyle(YouTubePlayer.PlayerStyle.MINIMAL);
    }

}

@Override
public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
    Log.e(CreateExperienceActivity.class.getSimpleName(), "Ruh Roh!");
}

参考 youtube 播放器可以完全使用来实现您自己的控制(play/pause 等等等等)

希望对一些人有所帮助body。

此致,