【发布时间】:2016-10-11 08:11:28
【问题描述】:
我想知道是否有一种方法可以同时使用 YouTubeBaseActivity 并获得 AppCompatActvity 的好处。
主要思想是在 dialogFragment 中播放 youtube 视频。
有什么想法吗?
【问题讨论】:
标签: android youtube android-appcompat android-dialogfragment android-youtube-api
我想知道是否有一种方法可以同时使用 YouTubeBaseActivity 并获得 AppCompatActvity 的好处。
主要思想是在 dialogFragment 中播放 youtube 视频。
有什么想法吗?
【问题讨论】:
标签: android youtube android-appcompat android-dialogfragment android-youtube-api
我终于找到了如何在对话框中播放嵌入的 youtube 视频。
只需要为您的对话框创建一个自定义布局,然后在扩展 DialogsFragment 的类中对其进行扩展。
在这个自定义布局中,您添加一个框架布局,它将成为一个 youtubefragment 容器。 不要忘记让您的 Dialog 实现 YouTubePlayer 接口,它几乎完成了。
最后的技巧是使用 getChildFragmentManager 而不是 supportFragmentManager 来处理在您的容器中添加 youtube 播放器片段的事务。
下面是你的对话框类的一些代码:
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 播放器的参考可以用来实现您自己的控制(播放/暂停等)
希望对身体有所帮助。
问候,
【讨论】:
至少不是通过扩展YouTubeBaseActivity,但通常这根本没有必要。推荐的方法是让您的 Activity 扩展 AppCompatActivity 并在您的 Activity 中使用 YouTubePlayerSupportFragment。
直接来自docs:
包含 YouTubePlayerView 的片段。使用这个片段是 播放 YouTube 视频的首选方式,因为您的活动确实如此 不需要扩展图书馆提供的活动,就像这种情况一样 直接使用 YouTubePlayerView`。
在对话框中播放 YouTube 视频可能很棘手,或者根本不可能。最好的方法是使用带有对话框主题/透明背景的 Activity 来模仿对话框的外观(同时仍然是一个 Activity)。
【讨论】: