Я использовал 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.
Я попробовал все решения, такие как
- удаление отступов и поля
- setting черный фон
- установка всей видимости вида, которая перекрывается как View.GONE
Все работает нормально, если я не использую DepthPageTranformer.
EDIT
Как мы знаем, OFFSCREEN_PAGES Viewpager = 1 по умолчанию.Поэтому следующая и предыдущая страницы будут в кеше.Учтите, что если вид игрока находится на 5-й странице, если я перейду на 7-ю страницу и вернусь на 5-ю страницу, то видео воспроизводится.Там четко сказано, что "previous page of video page overlays"
.Есть ли способ обновить эту страницу или удалить предыдущую страницу из списка OFFSCREEN_PAGES.
Кто-нибудь может мне помочь?