2016-08-03 2 views
0

enter image description hereAndroid - Пользовательская анимация ViewPager

Это то, что я должен реализовать. У меня уже есть вертикальный просмотрщик, но мне не хватает опыта в преобразованиях, и я не знаю, как это сделать ...

Верхняя часть следующей карты для показа просматривается ниже текущей карты. Когда следующая карта касается и перетаскивается вверх, начинается анимация, с которой следующая карта сдвигается вверх, и в то же время текущая карта будет уменьшена, а затем немного сдвинута, так что ее верхняя часть будет показана после перехода.

Я очень ценю вашу помощь, так как это время чувствительный вопрос

+0

Можете ли вы сказать мне библиотеку вертикальной ViewPager или исходный код вертикального просмотра? – nshmura

+0

https://github.com/kaelaela/VerticalViewPager – Anonymous

ответ

1

ли ниже код следовать вашим требованиям?

Сделайте оригинальный Transformer:

public class SlideUpTransformer implements ViewPager.PageTransformer { 

    @Override 
    public void transformPage(View view, float position) { 
     int pageWidth = view.getWidth(); 
     int pageHeight = view.getHeight(); 

     if (-1 < position && position < 0) { 
      float scaleFactor = 1 - Math.abs(position) * 0.1f; 
      float verticalMargin = pageHeight * (1 - scaleFactor)/2; 
      float horizontalMargin = pageWidth * (1 - scaleFactor)/2; 
      if (position < 0) { 
       view.setTranslationX(horizontalMargin - verticalMargin/2); 
      } else { 
       view.setTranslationX(-horizontalMargin + verticalMargin/2); 
      } 
      view.setScaleX(scaleFactor); 
      view.setScaleY(scaleFactor); 
     } 

     view.setTranslationX(view.getWidth() * -position); 

     if (position > 0) { 
      float yPosition = position * view.getHeight(); 
      view.setTranslationY(yPosition); 
     } 
    } 
} 

Используйте так:

viewPager.setPageTransformer(false, new SlideUpTransformer()); 

Это работает так:

enter image description here

+0

спасибо, вы были довольно быстры! он почти делает то, что я хочу. Полагаю, что с небольшим изменением я получу точный результат, который я хочу. – Anonymous

Смежные вопросы