4

我一直在寻找解决方案,因为太久了,我觉得卡住了。所以我决定在stackoverflow上写我的第一篇文章:)

我正在尝试在 android 4.0 及更高版本中为我的应用程序做一个 CoverFlow,经过一些研究后,我决定用ViewPager、 增加OffscreenPageLimit、 并为PageTransformer效果设置负边距和奖金。

所以我的错误是关于 z-index 当边距太负时一个图像覆盖另一个图像,因为绘图顺序,左边的图像在顶部,它一点也不漂亮。

请参阅此处的错误-> http://img33.imageshack.us/img33/2448/r1l1.jpg

因此,经过一些研究,解决方案似乎是覆盖getChildDrawingOrderViewPager课堂上的方法。我是这样做的:

private void setChildDrawingOrder() {
    int count = getChildCount();
    positions = new SparseIntArray(count);
    for (int i=0, j=0 ; i<count ; i++) {
        if (i == position) {
            positions.put(count-1, i);
        } else {
            j++;
            positions.put(count-1-j, i);
        }
    }
    mNeedsToSetChildDrawingOrder = false;
}

@Override
protected int getChildDrawingOrder(int childCount, int i) {
    if(i == 0 && mNeedsToSetChildDrawingOrder) setChildDrawingOrder();

    return positions.get(i);
}

其中位置是一个SparseIntArray,顶部的项目获得更高的值(childCount-1)。我将它填充到onPageSelected(方法实现OnPageChangeListener在我的ViewPager)中以获得我希望它位于顶部的项目的位置。

@Override
public void onPageSelected(int position) {
    if (lastPosition != position) {
        lastPosition = position;
        ViewPager viewPager = ((MainActivity)mAdapterContext).getViewPager();
        viewPager.setPosition(position);
    }
}

我看不出我的错误在哪里!我也尝试了一些bringChildToFront没有onPageSelected任何成功的东西,可能是因为在调用PageTransformer之后重绘了所有内容。onPageSelected

任何想法 ?

谢谢

编辑 15/10/13 :我编辑我的代码,因为我没有掌握该方法的作用!它是“获取要为该迭代绘制的子元素的索引”。而不是“我什么时候应该画孩子我?” (感谢这篇文章

我也有一些 NullPointerException`,因为计数不是每次都相同,所以我将它移到我的 ViewPager 中。

它好多了,但仍然有一些绘图错误!我的职位SparseIntArray看起来不错,所以我不明白。好像是随机出现的。。。

4

0 回答 0