2012-12-05 5 views
5

Ich versuche ein unendliches Karussell mit der ViewPager-Komponente zu implementieren. Ich basiere auf dem von Antonyt erstellt, aber es gibt ein Problem mit weniger als 4 Ansichten. Wie die Aussicht bereits vorhanden ist. Es muss eine Möglichkeit sein, den Viewpager dazu zu bringen, die gleiche Ansicht/Seite an verschiedenen Stellen zu zeichnen.ViewPager Circular mit weniger als 4 Ansichten

Antwort

0

Die Lösung besteht darin, die gleiche untergeordnete Ansicht im ViewPager zu verwenden. Und um dies zu tun, ohne dass das gleiche Kind bereits einem Elternteil zugewiesen wird, wird ein ProxyView mit der echten Ansicht darin verwendet. Erweitert die Fake-Ansicht von ViewGroup und überschreibt die Draw-Methode.

1

Ich stieß auf das gleiche Problem, konnte die Lösung nicht selbst finden. Aber ich denke, es ist unmöglich, nur mit 1-4 Ansichten zu arbeiten. Was das Problem ist, dass alle Ansichten (für 1-4 Bilder in der Wiederholung) sofort (oder zumindest in einem sehr kurzen Intervall) instanziiert werden, stört dies den Bildladeprozess, weil die vorherige Ladung nicht beendet ist, so dass die vorh man gibt eine beschädigte Ansicht zurück. Sie können das jedoch so handhaben.

1) direkt nach Instanziierung Verwendung Handler mit Verzögerung von 100-200ms durch Ansichten Flip setCurrentItem() immer wieder (ca. 10 mal) in jede Richtung, auf diese Weise die ursprünglichen 4 außerhalb des Bereichs sein wird (Wenn Sie Off-Screen-Seitenbegrenzung haben, die ich hoffe, Sie haben aufgrund der Infinet-Natur Ihres Codes) und wird eins nach dem anderen später erstellt werden.

2) Verwenden mehrerer Objekte Puffer,

1 bild 8 Puffer

2 Bilder-4-Puffer für jeden

3 images-2 Puffer für jeden ... etwas wie folgen .

ist keine ideale Lösung aber beide funktionierten für mich aber. Ich würde gerne wissen, was du auch versucht hast.

+0

Hallo Shakti, ich verstehe nicht ganz Ihre Lösung. Könnten Sie Ihren Code teilen? – Dayerman

+0

Die Implementierung erwies sich für mich mit Streucode als komplex. Die Grundidee besteht darin, sie nacheinander statt auf einmal instanziieren zu lassen. Versuche etwas zu tun, um das zu ermöglichen. Im Falle von Puffern müssen Sie mehrere Imageviews mit demselben Inhalt erstellen. – Shakti

+0

Das Problem ist, dass ich die gleiche Ansicht an verschiedenen Orten verwenden muss, so dass ich viele Instanzen instanziieren kann, da es sich um eine andere Instanz handelt. So ist ein Problem eines Kindes, das bereits einem Elternteil anhaftet. Lösung könnte so die Ansicht an 2 Stellen zeichnen. Das geht tiefer in die Struktur von ViewPager. – Dayerman

-1

Versuchen Sie den folgenden Trick, den ich erfolgreich verwendet habe, um ein (faux) unendlich ListView zu machen.

Geben Sie in der Adaptermethode getCount() Integer.MAX_VALUE zurück.

dann in dem instantiateItem() des Adapters oder destroyItem(), Verwenden position % datasource.size()

Dieser Trick von HERE genommen.

+0

Warum der Downvote? Das funktioniert ganz gut für Listen ... –

+0

Hallo Vinay, ich habe diese Lösung schon benutzt. Das Problem ist, dass es mit weniger als 4 Ansichten funktioniert. – Dayerman