私は使用しViewPager
ました。そして、いくつかのアイテムで、私は使用しましたYoutube Player Fragment.
この Android Dev Pageから PageTranformers を使用しました
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 Fragment のあるページの前のページです。
私はすべての解決策を試しました、
- パディングとマージンの削除
- 背景を黒に設定
- View.GONE としてオーバーラップするすべてのビューの可視性を設定する
DepthPageTranformer を使用しなければ、すべて正常に動作します。
編集
ご存知のように、Viewpager の OFFSCREEN_PAGES=1 はデフォルトです。したがって、次のページと前のページがキャッシュされます。プレーヤー ビューが 5 ページ目にある場合、7 ページ目に移動して 5 ページ目に戻ると、ビデオが再生されます。それははっきりと言ってい"previous page of video page overlays"
ます。このページを更新する方法や、OFFSCREEN_PAGES LIST から前のページを削除する方法はありますか。
誰でも私を助けることができますか?