Viewpager с API YouTube Player - PullRequest
       33

Viewpager с API YouTube Player

0 голосов
/ 16 мая 2018

Я использовал ViewPager.И в некоторых предметах я использовал Youtube Player Fragment.

Я использовал PageTranformers из этой Android-страницы

public class DepthPageTransformer implements ViewPager.PageTransformer {
    private static final float MIN_SCALE = 0.75f;

    public void transformPage(View view, float position) {
        int pageWidth = view.getWidth();

        if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.setAlpha(0);

        } else if (position <= 0) { // [-1,0]
            // Use the default slide transition when moving to the left page
            view.setAlpha(1);
            view.setTranslationX(0);
            view.setScaleX(1);
            view.setScaleY(1);

        } else if (position <= 1) { // (0,1]
            // Fade the page out.
            view.setAlpha(1 - position);

            // Counteract the default slide transition
            view.setTranslationX(pageWidth * -position);

            // Scale the page down (between MIN_SCALE and 1)
            float scaleFactor = MIN_SCALE
                    + (1 - MIN_SCALE) * (1 - Math.abs(position));
            view.setScaleX(scaleFactor);
            view.setScaleY(scaleFactor);

        } else { // (1,+Infinity]
            // This page is way off-screen to the right.
            view.setAlpha(0);
        }
    }
}

Проблема в том,

Если я использовал DepthPageTranformer,

при переходе на эту страницу (где есть фрагмент YouTube), я получаю предупреждение

W / YouTubeAndroidPlayerAPI: Воспроизведение видео с YouTube остановлено из-за несанкционированного наложения поверх проигрывателя.YouTubePlayerView скрыто android.widget.RelativeLayout {28896be5 VE .... ........ 39420,0-39960,850}.YouTubePlayerView полностью покрыт, с расстоянием в пикселях между каждым краем затемняющего вида и YouTubePlayerView: слева: 0, сверху: 0, справа: 0, снизу: 510 ..

Но этоработает, если я не использовал какой-либо преобразователь или с ZoomPageTranformer.

Я отладил код с помощью пользовательского ViewPager, чтобы проверить, какое представление

android.widget.RelativeLayout{28896be5 V.E..... ........ 39420,0-39960,850}

Это предыдущийстраница страницы с фрагментом Youtube Player.

Я попробовал все решения, такие как

  1. удаление отступов и поля
  2. setting черный фон
  3. установка всей видимости вида, которая перекрывается как View.GONE

Все работает нормально, если я не использую DepthPageTranformer.

EDIT

Как мы знаем, OFFSCREEN_PAGES Viewpager = 1 по умолчанию.Поэтому следующая и предыдущая страницы будут в кеше.Учтите, что если вид игрока находится на 5-й странице, если я перейду на 7-ю страницу и вернусь на 5-ю страницу, то видео воспроизводится.Там четко сказано, что "previous page of video page overlays".Есть ли способ обновить эту страницу или удалить предыдущую страницу из списка OFFSCREEN_PAGES.

Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 24 мая 2018

Просто реализуйте этот интерфейс YouTubePlayer.OnFullscreenListener Активность или фрагмент. Переопределяет метод ниже,

override fun onFullscreen(isFullScreen: Boolean) {
    if (isFullScreen)
        window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
    else
        window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
}

Почему это происходит?

При воспроизведении видео на YouTube с использованием YouTubePlayerFragment или YouTubePlayerView нам необходимо скрыть Строка состояния , поскольку больше просмотров не будет добавлено выше YouTubePlayerFragment или YouTubePlayerView .

У меня тоже была эта проблема, и я нашел решение.

Просто попробуйте это.

...