2016-08-03 40 views
0

enter image description hereAndroid - Benutzerdefinierte ViewPager Animation

Dies ist, was ich implementieren muss. Ich habe bereits einen vertikalen viewpager, aber ich habe keine Erfahrung in Transformationen und ich weiß nicht, wie das geht ...

Der obere Teil der nächsten Karte zu zeigen ist eine Vorschau unter der Karte derzeit angezeigt. Wenn die nächste Karte berührt und nach oben gezogen wird, beginnt die Animation, welche die nächste Karte gleitet und gleichzeitig wird die aktuelle Karte herausgezoomt und dann ein Stück nach oben geschoben, so dass ihr oberer Teil nach dem Übergang angezeigt wird.

würde ich sehr Ihre Hilfe zu schätzen wissen, da es eine Zeit sensible Angelegenheit ist

+0

Können Sie mir die Bibliothek von vertikalen viewpager sagen oder Quellcode des vertikalen Viewpagers? – nshmura

+0

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

Antwort

1

Im Folgenden Code folgen Ihren Anforderungen?

Machen Sie Ihre ursprünglichen Transformator:

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); 
     } 
    } 
} 

Verwendung wie folgt aus:

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

Dies funktioniert wie folgt:

enter image description here

+0

danke, du warst ziemlich schnell! es macht fast das, was ich will. Ich glaube, mit ein wenig Optimierung werde ich zu dem genauen Ergebnis kommen, das ich möchte. – Anonymous