ここにあるラベルの付いViewPager.PageTransformer
た例とほぼ同じものを実装しようとしています(ページの下部にあります)。DepthPageTransformer
ただし、階層をz-indexが左から右に減少するパターンに従う(つまり、右のビューが下から表示される)のではなく、z-indexを左から右に増加させたい(左のビューは下から表示されます)。
最初の試みとして、基本的に左から入ってくるページと右から入ってくるページを表す例のコードを交換しましたが、左側のページが常に右側のページの上にくるような暗黙のz順序があることがわかりました、スワイプして右のページを表示すると、ページはうまくスライドしますが、消えたビューは、新しく入力したビューの「上」に消えます。
によって提供されるページのzインデックスを調整する方法はあります ViewPager
か?
私の最初の本能は、どういうわけかサポートライブラリからコードをコピーViewPager
し、入札を行うためにクラスを変更することですが、そのクラスのどこで暗黙の順序が発生するのかはわかりません。
これが私の(主に剥ぎ取られた)PageTransformer
です:
public class DepthPageTransformer implements ViewPager.PageTransformer {
private static 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]
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 if (position <= 1) { // (0,1]
view.setAlpha(1);
view.setTranslationX(0);
view.setScaleX(1);
view.setScaleY(1);
} else { // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
}