2012-12-26 22 views
10

Tak jak tysiące innych programistów, w pewnym momencie chciałem poziomą galerię obrazów. (W moim przypadku chciałem go na stronie PageViewer). Wtedy usłyszałem, że istnieje widget o nazwie android.wiget.Gallery, który został zaprojektowany właśnie dla tej sytuacji.Poziomy widok przewijania: czy to naprawdę rozwiązanie?

Wkrótce zacząłem słyszeć, że Galeria została wycofana, a sprawdzenie StackOverflow, jeden po drugim, sugerowało, że HorizontalScrollView jest drogą do zrobienia.

Porzucam Galeria i wszystko konfiguruję w HorizontalScrollView. Po raz pierwszy zauważyłem, że HorizontalScrollView nie jest tak naprawdę widgetem w tym sensie, że obsługuje tylko jeden układ główny. Ok, więc zaimplementowałem układ główny jako LinearLayout. Dodaj wszystkie moje przewijarki w LinearLayout i uświadom sobie, że HorizontalScrollView również nie ma adaptera. Nie ma problemu, będę przeglądać widoki, nadmuchując je jeden po drugim, i odrzucając AsyncTask, aby załadować obraz. Działa dobrze na 4,03. Następnie uruchomiłem go na 2.2 i zgadnij co, uruchamianych jest zbyt wiele zadań asynchronicznych - więc to się zawiesza. Może jeden AsyncTask, który przebiega przez wszystkie, ale jest ponad 30 obrazów. Teraz zaczynam znowu rozważać Galerię.

Ale potem słyszę, że istnieje HorizontalListView. Zaimplementowałem to, plus adapter. Działa to doskonale, z tą różnicą, że przewijanie nie jest tak płynne (na stronie programu ViewPager), i blokuje się po ponownym załadowaniu kilka razy (na stronie ViewPagera). Zastanawiam się, czy powinienem poświęcić więcej czasu na modyfikowanie HorizontalListView lub ponowne odwiedzanie moich trzech innych implementacji. Może po prostu nie powinienem tak poważnie potraktować deprecjacji.

Wszelkie sugestie?

Epilog:

W końcu zdecydowałem się pozostać przy HorizontalScrollView do wewnątrz ViewPager i użyć HorizontalListView innych sytuacjach. Było to spowodowane przewijaniem wydajności, błyskawicą i udało mi się w końcu opracować niestandardową kartę, przesłoniwszy funkcję Scroll w widoku HorizontalScrollView, i w połączeniu z CountDownTimer aktualizować obrazy w zakresie okresowym, niezależnie od prędkości. Inne rozwiązanie sugerowało użycie prędkości, aby rozpocząć pobieranie, gdy jest wystarczająco wolne. Byłoby wspaniale, gdyby adnotacje HorizontalListView sprawdzały jego zachowanie w ViewPager, ponieważ jestem pewien, że można go zoptymalizować i poprawić. Byłoby to moje preferowane rozwiązanie, gdybym miał więcej czasu. Ale czas jest ulotny ..

+0

Co to jest "HZListView"? Coś, co napisałeś? –

+0

@ K-ballo 'HorizontalListView' może być skrótem? –

+0

Nie jego https://github.com/vieux/Android-Horizontal-ListView – user1847544

Odpowiedz

3

Jeśli nadal chcesz pracować z HorizontalScrollView, sugeruję, aby szukać wyglądu here dla układu i here do obsługi detektora wyboru przedmiotów. Nie podoba mi się ta trasa, ponieważ zasadniczo tworzysz jednego gigantycznego LinearLayout wewnątrz HorizontalScrollView, co może powodować problemy z pamięcią, ponieważ wszystkie obrazy utrzymują się nawet po wyłączeniu ekranu.

Osobiście sugeruję użycie HorizontalListView znalezionych here.

+0

Sugestie są zawsze mile widziane, ale sprawdź też jego zachowanie w aplikacji ViewPager. – user1847544

Powiązane problemy