Erstellen Sie Karussell mit ViewFlipper oder ViewPager

9

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

%Vor%

Irgendeine Idee, wie Sie diese beiden Dinge erreichen können?

    
iSun 04.12.2011, 22:55
quelle

3 Antworten

2

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.

    
Akhil 19.04.2013, 20:04
quelle
1

Verwenden Sie einen ViewPager mit mehreren Seiten:

Ссылка

    
Flávio Faria 17.04.2013 21:55
quelle
1

Ok, hier ist eine Sache, die Sie tun können:

  1. Verwenden Sie eine horizontale Listenansicht ( hier )

  2. Stellen Sie sicher, dass jedes Element etwa 1/3 der Bildschirmbreite einnimmt. Vielleicht ein bisschen mehr.

  3. 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 ".

  4. 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.

android developer 18.04.2013 12:06
quelle