- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想要一个包含 2 或 3 个 YouTube 视频的小 View ,嵌入在更宽的布局中(仅限平板电脑)。用户应该能够在视频之间切换(同时保持在同一个 Activity/屏幕上)。是否可以使用 YouTubePlayerFragment 执行此操作?
到目前为止似乎还没有(这是一个 relevant bug report ,但由于尚未对其发表评论,因此还不是明确的“否”)。
单独使用 YouTubePlayerFragment 工作正常,但我在 ViewPager 中遇到了零星的各种问题(其中:未指定的连接问题,没有 YoutubePlayer 回调发生;每个 fragment 显示相同的缩略图;空白 View 没有回调或其他反馈)。
这是从玩具测试项目中提取的一些代码。我可能为这篇文章引入了错误编辑,并且为了清楚起见,我跳过了配置更改处理等:
public class MainActivityFragment extends Fragment {
private static String API_KEY = "something";
public MainActivityFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
final ViewPager viewPager = (ViewPager) rootView.findViewById(R.id.viewPager);
TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tabLayout);
Adapter adapter = new Adapter(getChildFragmentManager());
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
return rootView;
}
class Adapter extends FragmentStatePagerAdapter {
private String[] getVids(){
return new String[]{"ORgucLTtTDI", "WzQ2RvSLR4o","dQw4w9WgXcQ"};
}
public Adapter(final FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(final int position) {
YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment();
fragment.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(final YouTubePlayer.Provider provider,
final YouTubePlayer youTubePlayer,
final boolean b) {
youTubePlayer.cueVideo(getVids()[position]);
}
return fragment;
}
@Override
public int getCount() {
return getVids().length;
}
@Override
public CharSequence getPageTitle(final int position) {
return getVids()[position] + " [" + position + "]";
}
}
我想知道的是:
最佳答案
我有一个可行的(如果不是理想的)解决方案。该问题似乎是由于当 ViewPager 将另一个 fragment 滑入到位时,来自前一个 fragment 的流式连接仍然处于打开状态。
我的解决方案是在切换ViewPager时在旧的YoutubePlayer上调用.reset()
,然后在新的YoutubePlayer上再次调用.initialize()
。这需要响应 TabLayout 的 onTabSelected
事件,这意味着我不能使用 .setupWithViewPager
(它吞没了 ViewPager 和 TabLayouts View 更改事件)。这大致是适配器中需要的(initialisePlayer
和 shutDownPlayer
被调用以响应选项卡更改,在设置适配器、ViewPager 和 TabLayout 的 fragment 中):
private SparseArray<YouTubePlayerSupportFragment> fragments = new SparseArray<>(3);
private SparseArray<YouTubePlayer> players = new SparseArray<>(3);
@Override
public android.support.v4.app.Fragment getItem(final int position) {
YouTubePlayerSupportFragment fragment = new YouTubePlayerSupportFragment();
fragments.put(position, fragment);
return fragment;
}
public void initialisePlayer(final int position) {
YouTubePlayerSupportFragment fragment = fragments.get(position);
fragment.initialize(API_KEY, new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(final YouTubePlayer.Provider provider, final YouTubePlayer youTubePlayer, final boolean b) {
players.put(position, youTubePlayer);
youTubePlayer.cueVideo(getVids()[position]);
}
@Override
public void onInitializationFailure(final YouTubePlayer.Provider provider, final YouTubeInitializationResult youTubeInitializationResult) {
}
});
}
public void shutDownPlayer(int position) {
YouTubePlayer player = players.get(position);
if (player == null) {
return;
}
player.release();
}
这种方法的缺点:
如果出现任何更好的解决方案,我愿意接受。
关于android - YouTubePlayerFragment 可以在 ViewPager 中使用吗?如果没有替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32281942/
我正在使用 YoutubePlayerFragment 类来播放视频。我想添加一个 GestureListener,但他们没有设置手势检测器的方法。我试过:
我想在带有 backstack 的 Activity 中使用 YouTubePlayerFragment。因此,当我按下后退按钮时, fragment 会消失,并且在以后的某些操作中(例如单击按钮)会
我正在尝试使用YouTube API在viewpager中播放YouTube视频。我的片段由一个FrameLayout组成,在其中播放视频。该视频正在加载,但是在我播放后立即停止。 错误日志显示为:
编辑 cjohn捕获了缺失的一 block 。我忘记在 YTPlayerFragment 上调用 init()。 Android 开发新手。我试图将 YouTube 视频放入 YouTubePlaye
我有一个 RecyclerView,里面有 CardView。我希望每个 CardView 都有自己的 YouTubePlayerFragment。即使它们不能同时全部激活,我什至无法在任何 Card
我试图在方向改变时继续播放 YouTubePlayerFragment。 代码如下所示: @Override public View onCreateView(LayoutInflater infla
我正在尝试在 Youtube 应用程序中复制视频最小化,如图所示 here .为了实现这一点,我尝试使用 Draggable Panel图书馆。当我运行示例时,我注意到视频在播放过程中最小化时不会缩放
我希望将 YouTubePlayerFragment 覆盖在我的自定义视频 ListView 上,但收到错误 [应用程序不幸停止]。这是我的布局文件: Activit
Activity 的相关部分: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(
我正在处理 YouTubePlayerFragment 集成。在 YouTubePlayerFragment 中初始化 YouTubePlayer 时,它从另一个应用程序获取音频,并且该特定应用程序停
我正在使用 Youtube API 在我的 Android 应用程序中播放 Youtube 视频。它在较新的手机上运行良好,但当我尝试在运行 Gingerbread 的设备上运行时,出现错误: Una
我想要一个包含 2 或 3 个 YouTube 视频的小 View ,嵌入在更宽的布局中(仅限平板电脑)。用户应该能够在视频之间切换(同时保持在同一个 Activity/屏幕上)。是否可以使用 You
当我播放某些视频时出现错误,显示“此视频包含来自 wmg 的内容。在某些网站上播放受到限制” 有人知道在我的播放器中播放这个视频吗? 提前致谢 最佳答案 它说: 此视频包含来自 WMG 的内容。它在某
我想在水平 ScrollView 中显示多个 YouTube 视频。为此,我正在动态添加 YouTubePlayerFragments。这是我的代码 fragment : //set videos
YouTubePlayerFragment 在 CollapsingToolbarLayout 中不工作(播放)。 我想从 youtube android api 播放 youtube 视频。在 Co
我正在使用 Android YouTube API 示例在我的应用中创建无边框 YouTube 播放器。我遇到一个问题,即缓冲/加载进度条继续显示在我的视频上,即使它已加载并开始播放。我可以通过一些小
我正在开发一个安卓应用程序。在此应用程序中,我希望使用 AppCompatActivity 在 ListView 或 RecyclerView 中使用 youtube 播放器播放 youtube 视频
我正在使用 Android YouTube API 示例在我的应用中创建无边框 YouTube 播放器。我遇到一个问题,即缓冲/加载进度条继续显示在我的视频上,即使它已加载并开始播放。我可以通过一些小
我正在尝试在我的 Fragment 中播放视频。但是,我无法让它工作。如果我扩展“YoutubeFailureRecovery”,我会得到: 09-06 21:56:40.472: E/Android
我在我的android项目中实现TouTube Api。我在YouTubePlayerFragment之前的“as”下一行出现错误,“此转换无法成功”。我正在用片段初始化youtube播放器。我已经在
我是一名优秀的程序员,十分优秀!