gpt4 book ai didi

android - ViewPagers 的隐式 Z 排序

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:46:25 26 4
gpt4 key购买 nike

我正在尝试实现一个与 example found here 几乎相同的 ViewPager.PageTransformer标记为 DepthPageTransformer(位于页面底部)。

但是,我希望 z-index 从左到右增加,而不是让层次结构遵循 z-index 从左到右递减的模式(即右边的 View 将从下方出现),而不是左边将从下方出现)。

作为第一次尝试,我基本上交换了示例中表示从左侧进入的页面与右侧进入的页面的代码,但我发现有一个隐式的 z 顺序,这样左侧的页面总是 above 页面向右,因此当您向右滑动以查看页面时,它会很好地滑动,但消失的 View 将消失在新进入的 View 的“顶部”。

是否有任何方法可以调整由 ViewPager 提供的页面的 z 索引?

我的第一直觉是以某种方式从支持库中复制 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);
}
}
}

最佳答案

ViewPager 页面的绘制顺序由 ViewPager.setPageTransformer() 方法的第一个参数决定。

查看方法签名:

public void setPageTransformer (boolean reverseDrawingOrder, ViewPager.PageTransformer transformer)

reverseDrawingOrder 参数文档说:“如果提供的 PageTransformer 要求页面 View 从最后到第一个而不是从第一个到最后绘制,则为真。”

在内部,当确定 ViewPager 页面绘制顺序时,它会调用:

protected int getChildDrawingOrder(int childCount, int i) {
final int index = mDrawingOrder == DRAW_ORDER_REVERSE ? childCount - 1 - i : i;
final int result = ((LayoutParams) mDrawingOrderedChildren.get(index).getLayoutParams()).childIndex;
return result;
}

mDrawingOrder 由 ViewPager.setPageTransformer() 中的 reverseDrawingOrder bool 标志在内部设置

关于android - ViewPagers 的隐式 Z 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510401/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com