Da GalleryView
veraltet ist, sollten wir auf einige alternative Widgets immigrieren. In meinem Fall ist ViewFlipper
das beste, aber ich habe mit verschiedenen Problemen zu kämpfen, wie Sie in dem folgenden Screenshot sehen können, mit dem ich ein Karussell ImageGallery
entworfen habe GalleryView
:
Mit ViewFlipper
funktioniert alles so, wie ich es erwartet habe, aber ich kann zwei Dinge nicht umsetzen:
1- ViewFlipper
zeigt immer einen Gegenstand an; Ich muss jedoch drei Elemente (oder sogar mehr) gleichzeitig anzeigen.
2- ViewFlipper
ist ein nicht berührbares Widget und es ist nicht das, was ich will!
Wie FlávioFaria über ViewPager
im folgenden Beitrag erwähnt hat, ist es auch ein großartiger Fall, aber ich kann meine Scale-Up-Animation nicht an sie weitergeben!
Ich habe alles mit ViewPager
gemacht, jetzt funktioniert es großartig, aber ich habe eine Funktion verpasst, und das ist unendlich scrollen!
Meine PagerAdapter
class hinzugefügt
Irgendeine Idee, wie Sie diese beiden Dinge erreichen können?
Nachdem ich den Code durchgegangen bin, habe ich festgestellt, dass sich CarouselAdapter zirkulär verhält (infinite scrolling) Teil des Codes ist, was dies verursacht: -
%Vor%und
%Vor%Wie auch immer Sie es tun
%Vor% in instantiateItem, also weisen Sie für jede Seite in Ihrem ViewPager Speicher für ImageView zu, und ViewPager wird dadurch nicht mehr genügend Arbeitsspeicher.
ViewPager hat die Methode public void setOffscreenPageLimit (int limit)
, die den zugewiesenen Speicher begrenzt, indem freie Seiten in der Ansichtshierarchie zerstört werden.
Siehe unten in der Android-Dokumentation
Legen Sie die Anzahl der Seiten fest, die auf beiden Seiten der Seite verbleiben sollen aktuelle Seite in der Ansichtshierarchie in einem Leerlaufzustand. Seiten darüber hinaus Limit wird bei Bedarf vom Adapter neu erstellt.
Dies wird als Optimierung angeboten. Wenn Sie die Nummer im Voraus wissen von Seiten, die Sie unterstützen müssen oder Lazy-Loading-Mechanismen haben Wenn Sie diese Einstellung auf Ihren Seiten platzieren, kann dies zu Vorteilen führen wahrgenommene Sanftheit von Paging-Animationen und Interaktion. Wenn Sie haben eine kleine Anzahl von Seiten (3-4), die Sie auf einmal aktiv halten können, Es wird weniger Zeit in Layout für neu erstellte Sichtunterbäume als benötigt der Benutzer paginiert hin und her.
Sie sollten dieses Limit niedrig halten, besonders wenn Ihre Seiten komplex sind Layouts. Diese Einstellung ist standardmäßig auf 1 eingestellt.
Wenn Sie wie oben erwähnt keinen Wert angeben, wird der Standardwert 1 verwendet, und ViewPager wird leere Seiten aus der Ansichtshierarchie löschen. Sie müssen also entsprechend Ihren Speicheranforderungen (Anzahl der Bilder und durchschnittliche Bildgröße) einen optimierten Wert übergeben, der Ihr Problem mit zu wenig Arbeitsspeicher löst.
Ok, hier ist eine Sache, die Sie tun können:
Verwenden Sie eine horizontale Listenansicht ( hier )
Stellen Sie sicher, dass jedes Element etwa 1/3 der Bildschirmbreite einnimmt. Vielleicht ein bisschen mehr.
Um die Klebrigkeit des mittleren Objekts zu erzielen, sollten Sie Berührungsereignisse behandeln, damit das Bild bis zum mittleren Element geglättet wird, z. B. wie in Samsungs Beispiel " Kreis-Launcher ".
Wenn Sie ausgefallenere Effekte wünschen, ändern Sie die Größen- / Standorteigenschaften der Ansichten ähnlich wie in dem Beispiel, über das ich in # 3 geschrieben habe.
Tags und Links android android-layout viewflipper galleryview