Próbuję zaimplementować nieskończoną karuzelę za pomocą składnika ViewPager. Opierałem się na tym stworzonym przez Antonyt, ale istnieje problem z wykorzystaniem mniej niż 4 widoków. Ponieważ widok już istnieje. Musi to być sposób na okiełznanie Viewpagera, aby narysować ten sam widok/stronę w różnych miejscach.Okrąg widoku z mniej niż 4 widokami
Odpowiedz
Rozwiązaniem jest użycie tego samego widoku podrzędnego w ViewPager. Aby to zrobić bez konieczności przypisywania tego samego dziecka rodzicowi, należy użyć ProxyView z rzeczywistym widokiem wewnątrz. Rozszerza, że Fałszywy widok z ViewGroup i nadpisanie metody Draw zrobi lewy!
Wpadłem na ten sam problem, sam nie mogłem znaleźć rozwiązania. Ale myślę, że nie da się tego zrobić, używając tylko 1-4 widoków. Problem polega na tym, że wszystkie widoki (na 1-4 obrazy w powtórzeniach) będą tworzone natychmiast (lub przynajmniej w bardzo krótkim odstępie), co koliduje z procesem ładowania obrazu, ponieważ obciążenie wstępne nie zostało zakończone, więc prev jeden zwraca uszkodzony widok. Możesz sobie z tym poradzić.
1) tuż po instancji, zastosowanie obsługi z opóźnieniem 100-200ms odwrócić poprzez widokiem setCurrentItem() kółko (około 10 razy) w obu kierunkach, w ten sposób, przy 4 będzie poza zakresem (jeśli masz limit strony na ekranie, który mam nadzieję, że masz infinte charakter kodu) i zostanie utworzony jeden po drugim później.
2) pomocą obiektów wielokrotnego buforowe,
1 obraz-8 bufory
2 zdjęć-4 buforów dla każdego
3 obrazy-2 buforów dla każdego ... coś takiego .
też nie jest idealnym rozwiązaniem, ale oba działają dla mnie, ale. Chciałbym wiedzieć, co też próbowałeś.
Wypróbuj następującą sztuczkę, której użyłem z powodzeniem do wykonania (faux) infinite ListView
.
W metodzie getCount()
adaptera zwróć wartość Integer.MAX_VALUE.
Następnie w adaptera instantiateItem()
lub destroyItem()
, użyj position % datasource.size()
Ten trik został zaczerpnięty z HERE.
Dlaczego upadek? To działa całkiem dobrze dla List ... –
Cześć Vinay, już użyłem tego rozwiązania. Problem polega na tym, aby działał z mniej niż 4 widokami. – Dayerman
Być może konieczne będzie wykonanie pewnych czynności w metodzie OnDestoryItem w celu ponownego dołączenia przedmiotu, który został odłączony.
Mam już opublikować moje rozwiązanie tutaj, https://github.com/antonyt/InfiniteViewPager/issues/2
- 1. Narysuj okrąg na widoku (Android)
- 2. x86 Czy push/pop może mieć mniej niż 4 bajty?
- 3. Junit: mniej niż asercja?
- 4. Lucene.Net większy niż/mniej niż TermRangeQuery?
- 5. Brzytwa MVC 4, formularz wysyłania z częściowymi widokami
- 6. Jak przesunąć okrąg w tablicy 4 znaków?
- 7. Test równoważności z tylko mniej niż operatora?
- 8. namespace std przeciążenia mniej niż
- 9. jQuery sprawdzanie poprawności mniej niż
- 10. Udostępnianie widoku między dwoma widokami reaguje natywnie
- 11. Center OwlCarousel, gdy mniej niż X przedmiotów
- 12. Ruby spać lub opóźnić mniej niż sekundę?
- 13. większa niż, mniej niż równe, większe niż równe MIPS
- 14. Dziedziczenie klasy widoku piramidy z widokami @view_defaults i @view_config
- 15. Mniej niż operator poprzez niejawną konwersję?
- 16. zagnieżdżanie> (większe niż) w mniej CSS
- 17. lxml obcina tekst zawierający znak "mniej niż"
- 18. Pozycjonowanie widoku pod dwoma widokami (lub najniższym widokiem)
- 19. Korzystanie z potęgowania ** 0,5 mniej wydajne niż math.sqrt?
- 20. Wskaźniki złożone z Mongo, używające mniej niż wszystkiego w zapytaniu
- 21. Jak utworzyć okrąg z numerem?
- 22. Python, narysuj okrąg z PIL
- 23. blokowanie interakcji użytkownika z widokami podstawowymi
- 24. Wybierz coś, co ma więcej/mniej niż znak x.
- 25. Jak wyłączyć/zmienić animację między widokami w widoku jonowym
- 26. Podgląd modelu widoku, jak przekazywać elementy między widokami?
- 27. Testowanie phpunit yii z widokami w zasięgu
- 28. Django Rest Framework Routery z wieloma widokami
- 29. spis wszystkich produktów zawierających czynnik mniej niż maksymalna
- 30. Android - cięcie okrąg z kwadratowym Bitmap
Cześć Shakti, nie mam dość rozwiązania. Czy możesz udostępnić swój kod? – Dayerman
Implementacja okazała się dla mnie skomplikowana z rozproszonym kodem. Podstawową ideą jest sprawienie, aby były tworzone jeden po drugim zamiast wszystkich naraz. Spróbuj coś takiego zrobić. W przypadku buforów należy utworzyć wiele obrazów z taką samą zawartością. – Shakti
Problem polega na tym, że muszę używać tego samego widoku w różnych miejscach, więc nie mogę utworzyć instancji wiele razy, ponieważ będzie to inna instancja. Podobnie jest z problemem dziecka, które jest już powiązane z rodzicem. Rozwiązaniem może być więc narysowanie widoku w 2 miejscach. Które idzie głębiej w strukturę ViewPager. – Dayerman