0

私は使用し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 のあるページの前のページです。

私はすべての解決策を試しました、

  1. パディングとマージンの削除
  2. 背景を黒に設定
  3. View.GONE としてオーバーラップするすべてのビューの可視性を設定する

DepthPageTranformer を使用しなければ、すべて正常に動作します。

編集

ご存知のように、Viewpager の OFFSCREEN_PAGES=1 はデフォルトです。したがって、次のページと前のページがキャッシュされます。プレーヤー ビューが 5 ページ目にある場合、7 ページ目に移動して 5 ページ目に戻ると、ビデオが再生されます。それははっきりと言ってい"previous page of video page overlays"ます。このページを更新する方法や、OFFSCREEN_PAGES LIST から前のページを削除する方法はありますか。

誰でも私を助けることができますか?

4

1 に答える 1