【问题标题】:ViewPager and YouTube APIViewPager 和 YouTube API
【发布时间】:2018-09-14 18:37:06
【问题描述】:

我需要开发包含多个屏幕的应用程序,每个屏幕包含视频和图片或仅包含图片.. 每次间隔在此屏幕之间摆动

提示:用户不应通过停止视频或其他方式与视频互动

我尝试使用带有 YouTube 播放器 API 的视图寻呼机,但每个视频都会工作几秒钟然后停止并抛出此警告

“YouTube 视频播放因播放器顶部未经授权的覆盖而停止。YouTubePlayerView 被 com.google.android.youtube.player 遮挡”

附上我的代码截图。

我搜索了很多关于这个问题但我没有得到解决方案 我的代码的附加屏幕

我尝试通过使用片段和使用计时器在片段之间滑动来构建这个没有视图寻呼机..但也遇到了同样的问题

我也尝试使用网页视图,但无法处理之前所说的提示

是否有任何 viewPager 问题的解决方案,或者构建这个应用程序的其他想法?

这是我的主要活动

mPager.setAdapter(mPagerAdapter);
        mPager.setOffscreenPageLimit(1);
        pagerchangeListener = new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                mPagerAdapter.onPageChanged(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        };
        mPager.addOnPageChangeListener(pagerchangeListener);

viewPager 适配器方法:

@Override
        public Fragment getItem(int position) {

            if (data.get(position).getVideo() == null) {

                ImageFragment imageFragment = new ImageFragment();
                Bundle args = new Bundle();
                args.putString("IMAGE_URL", data.get(position).getImage());
                imageFragment.setArguments(args);
                return imageFragment;
            } else {

                Log.i("tag3", "getItem video" + String.valueOf(position));
                VideoFragment videoFragment =
                        VideoFragment.newInstance(data.get(position).getVideo(), data.get(position).getImage());
                listenerMap.put(position, videoFragment.getmInitializeListener());
                return videoFragment;

            }

        }

视频片段的构造函数:

public VideoFragment() {
        super();
        setRetainInstance(true);
        mInitializeListener = new InitializeListener() {
            @Override
            public void startVideo() {
                if (getUserVisibleHint())
                    initYoutube();
            }

            @Override
            public void stopVideo() {
                if (youTubePlayer1 != null)
                    youTubePlayer1.release();

            }
        };
    }

视频片段的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.newConcept.education.galleryApp.fragment.VideoFragment">

    <FrameLayout
        android:id="@+id/VideoFragment_youtube_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="top" />


    <ImageView
        android:id="@+id/VideoFragment_imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scaleType="fitXY"/>

</LinearLayout>

【问题讨论】:

    标签: android android-fragments android-viewpager youtube-api


    【解决方案1】:

    当您将 YoutubeFragment 与其他视图(如 imageview)“叠加”时,会出现此问题。一种可能的解决方案是,如果您可以在播放视频时隐藏图像视图并且您不再看到此警告。仅在视频开始时放置:

    videoFragmentImageView.setVisibility(View.GONE) 
    

    还要检查您是否在播放器面前没有其他视图,例如 FloatingActionButton 或其他,隐藏此视图。告诉我们这是否有效

    【讨论】:

    • 感谢您的帮助,我从视频片段中完全删除了图像视图以测试问题是否来自它..但没有任何改变,问题仍然存在
    • 你能在手机的开发者选项中启用“显示布局边界”吗?只是为了验证你是否没有其他视图覆盖。其他提示:打开另一个活动以显示视频(推荐)。另一种:更改根中的框架布局并放置相对或线性布局
    猜你喜欢
    • 2014-05-10
    • 1970-01-01
    • 2015-11-24
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 2014-05-30
    • 1970-01-01
    相关资源
    最近更新 更多