- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Activity 中,我有一个 viewPager,例如 3 页。在所有这些页面中,我都有一个带有不同 ID 视频的 YouTubePlayer。
问题是所有 YouTubePlayer 组件同时有相同的视频。
具体来说:
当显示第一页时,YouTubePlayer 显示第一个视频,所以一切似乎都正常。当我尝试滚动到第二页时,我可以看到第二个 YouTubePlayer 显示相同的视频。当第二页完全显示时(滚动后),在 View 寻呼机后面准备第三页。所以在第 3 页上,第 3 个 id video 被设置为 YouTubePlayer 组件。此时当前显示的第2页自动切换到第3个视频。
这就像 YouTubePlayer 的实例对于所有页面都是单一的。但是在每个页面上 new FragmentYouTubePlayer() 都被正确调用。
我不明白问题出在哪里。最后,我想知道是否可以同时使用多个 YouTubePlayer 组件(在 viewpager 中)?
感谢您的帮助。
最佳答案
我不记得到底出了什么问题,但是是的,我解决了我的问题。所以,如果它可以帮助你,这里是代码:
在我的主要 Activity 中,使用 PagerAdapter :
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(android.support.v4.app.FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
fragmentYouTubeContent = FragmentYouTubeContent.create(position);
return fragmentYouTubeContent;
}
@Override
public int getCount() {
int nb = 3;
return nb;
}
}
我的 FragmentYouTubeContent.class
package com.orange.OrangeJobs;
import java.util.List;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubeStandalonePlayer;
import com.google.android.youtube.player.YouTubeThumbnailLoader;
import com.google.android.youtube.player.YouTubeThumbnailView;
import android.support.v4.app.Fragment;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import android.widget.Toast;
public class FragmentYouTubeContent extends Fragment implements YouTubeThumbnailView.OnInitializedListener {
public static final int REQ_START_STANDALONE_PLAYER = 101;
private static final int REQ_RESOLVE_SERVICE_MISSING = 2;
private static final int RECOVERY_DIALOG_REQUEST = 1;
/**
* The fragment's page number.
*/
private int mPageNumber;
private String urlYouTube;
private boolean canHideStatusBar = false;
private Dialog errorDialog;
FrameLayout rl;
private YouTubeThumbnailView thumbnailView;
/**
* Factory method for this fragment class. Constructs a new fragment for the given page number.
*/
public static FragmentYouTubeContent create(int pageNumber) {
FragmentYouTubeContent fragment = new FragmentYouTubeContent();
fragment.setPageNumber(pageNumber);
return fragment;
}
public FragmentYouTubeContent() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@SuppressLint("InlinedApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setRetainInstance(true);
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.youtube, container, false);
urlYouTube = "YOUR_VIDEO_URL";
if (!"".equals(urlYouTube)) {
thumbnailView = (YouTubeThumbnailView) rootView.findViewById(R.id.youtubethumbnailview);
thumbnailView.initialize(Params.YOUTUBE_KEY, this);
thumbnailView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
// Launch standalone YoutTube player
Intent intent = null;
intent = YouTubeStandalonePlayer.createVideoIntent(getActivity(), YOUTUBE_KEY, urlYouTube, 0, true, false);
if (intent != null) {
if (canResolveIntent(intent)) {
canHideStatusBar = true;
startActivityForResult(intent, REQ_START_STANDALONE_PLAYER);
} else {
// Could not resolve the intent - must need to install or update the YouTube API service.
YouTubeInitializationResult
.SERVICE_MISSING
.getErrorDialog(getActivity(), REQ_RESOLVE_SERVICE_MISSING).show();
}
}
}});
}
return rootView;
}
@Override
public void onResume() {
super.onResume();
boolean isLandscape = false;
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
isLandscape = true;
}
else {
isLandscape = false;
}
if (canHideStatusBar && this.isVisible() && isLandscape) {
Utils.hideStatusBar(getActivity());
canHideStatusBar = false;
}
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onInitializationSuccess(YouTubeThumbnailView thumbnailView, YouTubeThumbnailLoader thumbnailLoader) {
thumbnailLoader.setVideo(urlYouTube);
}
@Override
public void onInitializationFailure(YouTubeThumbnailView thumbnailView, YouTubeInitializationResult errorReason) {
if (errorReason.isUserRecoverableError()) {
if (errorDialog == null || !errorDialog.isShowing()) {
errorDialog = errorReason.getErrorDialog(getActivity(), RECOVERY_DIALOG_REQUEST);
errorDialog.show();
}
} else {
String errorMessage = String.format(getString(R.string.error_thumbnail_view), errorReason.toString());
Toast.makeText(getActivity(), errorMessage, Toast.LENGTH_LONG).show();
}
}
// ***** Private methods *************************************************************************************
private boolean canResolveIntent(Intent intent) {
List<ResolveInfo> resolveInfo = getActivity().getPackageManager().queryIntentActivities(intent, 0);
return resolveInfo != null && !resolveInfo.isEmpty();
}
// ***** Properties methods *************************************************************************************
/**
* Returns the page number represented by this fragment object.
*/
public int getPageNumber() {
return mPageNumber;
}
/**
* @param pageNumber the pageNumber to set
*/
public void setPageNumber(int pageNumber) {
this.mPageNumber = pageNumber;
}
/**
* @return the canHideStatusBar
*/
public boolean isCanHideStatusBar() {
return canHideStatusBar;
}
/**
* @param canHideStatusBar the canHideStatusBar to set
*/
public void setCanHideStatusBar(boolean canHideStatusBar) {
this.canHideStatusBar = canHideStatusBar;
}
}
我的布局:youtube.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:background="@color/black"
android:scrollbarStyle="outsideOverlay"
android:orientation="horizontal" >
<com.google.android.youtube.player.YouTubeThumbnailView
android:id="@+id/youtubethumbnailview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:contentDescription="@string/empty_string"
android:src="@drawable/ic_media_embed_play"
/>
</RelativeLayout>
关于android - ViewPager 和 YouTubePlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25624454/
我想加载视频并将播放器设置为暂停状态。 我这样做是这样的: public void onInitializationSuccess(YouTubePlayer.provider provider, f
突然之间(2016 年 5 月 10 日)Android YouTubePlayer 拒绝播放某些音乐视频(例如 VEVO)。我知道这以前出现过,然后又消失了,但我想知道今天是否还有其他人看到过这种变
Android Youtube Player API 何时可供开发人员使用。 Google 站点上是否有可用的 jar 文件或何时将其作为 API 公开发布。 最佳答案 现在可用。更多信息:http:
我开发了一款使用 ActionBarSherlock 播放 youtube 视频的应用。 现在适用于 android 的 YouTubePlayer api 可用 ( here ),我想将它集成到我的
是否可以设置新的 YouTubePlayer for Android让它循环播放视频(重复)? 我还没有在docs中找到这样的方法. 最佳答案 您可以附加一个 YouTubePlayer.Player
我有一个在那里播放视频的布局,我想处理这个播放器上的 onClick。在我的线性布局中,我有他们的 api 中建议的 youtube fragment : 然后我在我的 Activity
我在 Fragment 中使用 YouTubePlayer(Android 版 YouTube api)我用 YouTube 播放器给 LinearLayout 充气,用这种方式: fragmentM
在我的 Activity 中,我有一个 viewPager,例如 3 页。在所有这些页面中,我都有一个带有不同 ID 视频的 YouTubePlayer。 问题是所有 YouTubePlayer 组件
我想为 YouTube 播放器 API 添加一个 onClickListener 事件我尝试了很多解决方案,但都没有用 我的一些尝试 YouTubePlayerView youTubePlay
我正在使用来自 YouTube Android Player API 的 YouTubePlayerFragment。我想自定义 UI。特别是在左上角隐藏视频标题并在右下角隐藏 YouTube Log
我遇到了 YouTube 播放器 OnStateChange 未触发的问题。我看过其他帖子,它们不太适合我的情况,因为我可能使用不同的(chromeless javascript)版本。 HTML:
我正在使用 YouTube API 在我的应用中播放视频。 我想在用户输入 fragment 时立即播放视频,所以我使用命令 player.play(); 来自动播放。但是这个命令似乎不起作用....
使用 Eclipse Memory Analyzer 我发现如果我在 2 个 Activity (例如 A 和 B)之间来回切换,虽然调用了 Activity B 的 onDestroy 方法,但 G
我正在使用YouTube Android Player API做一个关于youtube live的项目。 public class YoutubeLiveActivity extends AppCom
我正在尝试在我的应用中实现视频。我想我可以使用 YouTubePlayer API 并打开我的视频。如果我打开一个正常的新 Intent ,这工作正常。 但是,如果我在应用程序底部有一个菜单的 chi
我正在使用 here 中的 YouTubePlayer 。一切工作正常,除了在加载和改变方向时有一些白色 View 的显示。加载时,在播放器准备好之前会出现白屏。当设备旋转时改变方向时,玩家后面会显示
所以,YoutubePlayer 有声音和媒体 Controller ,但是应该显示视频内容的 ImageView 不可见。事实上,Layout Inspector 说它GONE。 我有一个扩展 Yo
我对 YouTubePlayerView 和 YouTubePlayerFragment 都有一个非常奇怪的问题。 我的应用程序是一个闹钟,我希望我的用户能够将 YouTube 视频设置为他们的闹钟。
我已经创建了一个使用 youtube API 的 android 应用程序,但是我遇到了一个问题。当我用 youtube 视频加载 fragment 时。加载另一个 fragment ,然后返回到带有
调用 YoutubePlayer.loadVideo() 方法时出现异常。 以下是我使用的代码: onInitializedListener=new YouTubePlayer.OnInitial
我是一名优秀的程序员,十分优秀!