我正在尝试实现一个与此处标记的示例ViewPager.PageTransformer
几乎相同的示例(它位于页面底部)。DepthPageTransformer
但是,与其让层次结构遵循 z-index 从左到右减小的模式(即右侧的视图将从下方出现),我希望 z-index 从左到右增加(左侧的视图将从下面出现)。
作为第一次尝试,我基本上交换了示例中表示从左侧与右侧进入的页面的代码,但我发现存在隐式 z 排序,使得左侧的页面始终高于右侧的页面,因此当您向右滑动查看页面时,它会很好地滑动,但消失的视图将消失在新输入视图的“顶部”。
有什么方法可以调整 a 所服务页面的 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);
}
}
}