Zeichnung Ich habe folgende ViewPager
:Umgekehrte Reihenfolge in der Hälfte von ViewPager
Ich versuche, eine Cover-Flow-Ansicht zu bauen. Das bedeutet, dass sich die Position und die Größe der Ansichten in ViewPager
je nach Berührungseingabe ändern.
Alles funktioniert gut mit meiner Implementierung mit Ausnahme der Zeichnungsreihenfolge der Ansichten.
Ich kann entweder pager.setPageTransformer(false,PageTransformer())
anrufen, die wie im Bild oben aussieht, oder setPageTransformer(true, PageTransformer())
, die die Zeichnungsreihenfolge umkehren würde.
Das Problem ist, dass ich die mittlere Ansicht (grün) vor seinen Nachbarn (blau, grau) brauche.
Ich habe ein paar Beiträge über view.bringToFront()
gelesen, aber ich konnte keine Lösung mit diesem Ansatz finden. Eine Middle-View-to-Front-Lösung wäre cool, aber das funktioniert nur, wenn drei Ansichten gleichzeitig sichtbar sind. Bei fünf Ansichten würde sich die fünfte Ansicht immer noch mit der vierten Ansicht überschneiden. (verwirrend, nicht wahr? ^^)
Übrigens ist meine minSdk 16 zu 18, also ist Elevation (Lollipop) nicht möglich.
Hier ist meine aktuelle PageTransformer
class PageTransformer() : ViewPager.PageTransformer {
val MIN_SCALE = 0.75f
override fun transformPage(view: View, position: Float) {
val pageWidth = view.width
val pageHeight = view.height
var vertMargin = pageHeight * (1 - MIN_SCALE)/2
var horzMargin = pageWidth * (1 - MIN_SCALE)/2
view.scaleX = MIN_SCALE
view.scaleY = MIN_SCALE
if (position < -2) { // [-Infinity,-1)
// This page is way off-screen to the left.
view.translationX = horzMargin - vertMargin/2
} else if (position <= 2) { // [-1,1]
// Modify the default slide transition to shrink the page as well
val scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position))
vertMargin = pageHeight * (1 - scaleFactor)/2
horzMargin = pageWidth * (1 - scaleFactor)/2
if (position < 0) {
view.translationX = horzMargin - vertMargin/2
} else {
view.translationX = -horzMargin + vertMargin/2
}
// Scale the page down (between MIN_SCALE and 1)
view.scaleX = scaleFactor
view.scaleY = scaleFactor
view.rotationY = position * -30
} else { // (1,+Infinity]
// This page is way off-screen to the right.
view.translationX = -horzMargin + vertMargin/2
}
}
}
diese zusammenfassend, ich ViewPager
müssen, die ihre Zeichnung, um nach dem aktuellen Artikel umkehrt.
Hinweis: Ich habe bereits jede verfügbare Bibliothek ausprobiert, aber nichts hat funktioniert.
Ich hoffe, es ist ein Genie, der mir helfen kann :)
Können Sie eine Bleistiftskizze von, was Ihre Notwendigkeit? Ich verstehe es nicht ganz – Mani
die graue Ansicht überschneidet sich mit der grünen einen Biegezeichnung Reihenfolge ist von links nach rechts. Ich möchte eine Bestellung von Mitte zu Seite. – Appyx
Hey, hast du irgendeine Lösung gefunden? –