Реализация карусели с помощью PageTransformer ViewPager - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь создать тип отображения Поворотный этой библиотеки ( iCarousel iOS ) с ViewPager.TransformPage, и у меня возникают проблемы со свойством 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 свойством представлений.

imageViewPager">.

enter image description here

Проблема в том, что когда я пролистываю следующую карточку, остальные складываются сбоку, я хочу, чтобы они двигались какэллипс, и при наведении они не должны сталкиваться друг с другом.Возможно ли реализовать это поведение в ViewPager PageTransformer?Если так, как я могу сделать свойство X правильным?Кроме того, возможно ли сделать бесконечную прокрутку с 3 элементами с помощью PageTransformer?

...