使用ViewPager的PageTransformer实现轮播

时间:2018-11-30 07:44:38

标签: android android-studio android-layout android-viewpager android-animation

我正在尝试使用ViewPager.TransformPage构建此(iCarousel iOS)库的 Rotary 显示类型,并且我的视图的translationX属性存在问题。我有3张卡片,希望它们表现得像轮播一样: enter image description here

这是我的代码:

@Override
public void transformPage(@NonNull View view, float realPosition) {
    // ------------------scale---------------------------
    float scaleFactor = 1 - 0.423f * Math.abs(realPosition);
    view.setScaleX(scaleFactor);
    view.setScaleY(scaleFactor);
    // --------------------Z-------------------------
    float zFactor = 1f - 0.35f * Math.abs(realPosition);
    view.setTranslationZ(zFactor);
    // --------------------X-------------------------
    /**
     *  -0.3<=realPosition<=0.3 => x=realPosition (done)
     */
    if (-.3 <= realPosition && realPosition <= 0.3) {
        view.setTranslationX(realPosition);
    }
    float xFactor;
    if (realPosition < -0.3) {
        xFactor = 0.6f + realPosition;
        view.setTranslationX(xFactor * 300);
    }
    if (realPosition > 0.3) {
        xFactor = 0.6f - realPosition;
        view.setTranslationX(xFactor * 300);
    }
}

我能够实现translationZ属性,但是translationX令人困惑,因为realPosition本身就是视图的x属性。

this is my current <code>ViewPager</code>

enter image description here

问题是,当我滑动到下一张卡片时,另一张卡片堆叠在一边,我希望它们像椭圆形一样移动,并且在滑动时它们不应相互碰撞。 是否可以在ViewPager的{​​{1}}中实现此行为?如果是这样,如何使X属性正确? 另外,是否可以通过PageTransformer使用3个元素进行无限滚动?

0 个答案:

没有答案