Obecnie używam w mojej aplikacji widoku listy, który może potrzebować jednej sekundy do wyświetlenia.
Obecnie używam @ id / android: pusta właściwość widoku listy, aby utworzyć tekst „ładujący”.
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="Loading..."/>
Teraz chciałbym zastąpić to animowanym kołem używanym w oknie dialogowym ładowania zamiast tego tekstu, chyba wszyscy wiecie, co mam na myśli:
Edycja: Nie chcę okna dialogowego. Chcę to pokazać w moim układzie.
Bardzo dziękuję za pomoc!
android
loading
android-asynctask
geometry
Waza_Be
źródło
źródło
Możesz to zrobić za pomocą następującego kodu xml
Z tym stylem
Aby tego użyć, musisz ukryć elementy interfejsu użytkownika, ustawiając wartość widoczności na BRAK i za każdym razem, gdy dane są ładowane, wzywaj
setVisibility(View.VISIBLE)
wszystkie swoje widoki, aby je przywrócić. Nie zapomnij zadzwonić,findViewById(R.id.loadingPanel).setVisiblity(View.GONE)
aby ukryć animację ładowania.Jeśli nie masz zdarzenia / funkcji ładowania, ale po prostu chcesz, aby panel ładowania zniknął po x sekundach, użyj uchwytu, aby uruchomić ukrywanie / wyświetlanie.
źródło
findViewById(...).setVisibility(View.GONE)
wierszu podczas obracania ekranu. Działa jak urok w jednej orientacji, ale masz pojęcie, dlaczego to może się zepsuć?findViewById(R.id.loadingPanel).setVisiblity(View.GONE)
w drugiej czynności? Nie może znaleźć,view
ponieważ nie masetContnetView()
metody w aktywności drugiego fragmentu. Dzięki!Jest to ogólnie określane jako Nieokreślony pasek postępu lub Nieokreślony dialog postępu.
Połącz to z Wątkiem i Uchwytem, aby uzyskać dokładnie to, czego chcesz. Istnieje wiele przykładów tego, jak to zrobić za pośrednictwem Google lub tutaj na SO. Gorąco polecam poświęcenie czasu na nauczenie się, jak korzystać z tej kombinacji klas, aby wykonać takie zadanie. Jest niezwykle przydatny w wielu typach aplikacji i daje doskonały wgląd w to, jak wątki i handlowcy mogą ze sobą współpracować.
Zacznę od tego, jak to działa:
Ładowanie zdarzenia uruchamia okno dialogowe:
Teraz wątek działa:
Wreszcie odzyskaj stan z wątku, gdy jest on gotowy:
źródło
Jeśli nie chcesz zawyżać innego widoku tylko w celu wskazania postępu, wykonaj następujące czynności:
Android zadba o widoczność paska postępu.
Na przykład w
activity_main.xml
:I w
MainActivity.java
:}
źródło
Możesz użyć tego kodu z próbek github Firebase ..
Nie musisz edytować plików układu ... po prostu utwórz nową klasę „BaseActivity”
W swoim działaniu chcesz użyć okna postępu.
Przed / Po funkcji, która wymaga czasu
źródło
Dla tych, którzy rozwijają się w Kotlinie, istnieje słodka metoda dostarczona przez bibliotekę Anko, która sprawia, że proces wyświetlania
ProgressDialog
jest dziecinnie prosty!Na podstawie tego linku:
Spowoduje to wyświetlenie okna dialogowego Postęp z wyświetlonym procentem postępu (dla którego należy przekazać
init
parametr, aby obliczyć postęp).Istnieje również
indeterminateProgressDialog()
metoda, która zapewnia animację Spinning Circle w nieskończoność, dopóki nie zostanie odrzucona:Krzycz na tym blogu, który doprowadził mnie do tego rozwiązania.
źródło