Ich habe ein MenuItem
in meinem ActionBar
, das ein "Reload" Icon ist. Mein Activity
hat ein WebView
und ich möchte, dass das Symbol beginnt zu animieren, wenn WebView
mit dem Laden einer Webseite beginnt und aufhört, wenn es fertig ist. Dies gilt auch, wenn Sie auf Links auf der geladenen Website klicken. Was ich bisher gemacht habe, funktioniert beim ersten Aufruf einer Webseite, aber wenn ich die Activity
belasse und eine andere Webseite lade, scheint das "reload" Icon zu verdoppeln, oder ich bekomme NullReference
Ausnahme auf% geworfen co_de%
Hier ist mein Code:
%Vor%Der auskommentierte Code ist anders, als ich versucht habe, es zum Laufen zu bringen.
UPDATE:
Nachdem ich das mehr getestet habe, habe ich einen Breakpoint in die refreshItem.setActionView(ivRefresh);
-Funktion gesetzt und manchmal wird es bis zu 7 Mal hintereinander getroffen und manchmal nicht. Das macht keinen Sinn, denn für mich sollte das funktionieren. Verwirrend ...
LÖSUNG (SORTIERUNG):
Das Aktualisieren der StartAnimation () - Funktion scheint dieses Problem zu beheben, scheint aber eher eine Klebebandlösung zu sein:
%Vor% Um ein reibungsloses Benutzererlebnis zu schaffen, sollte Ihre Animation zum Laden des Ladevorgangs wahrscheinlich starten, wenn der Benutzer auf den Link klickt - anstatt, wenn die neue Seite geladen wird - und zu beenden, wenn die neue Seite geladen wurde. Dadurch reagiert die App besser auf den Benutzer und ist in Dolphin Browser
Um dies zu implementieren, müssen Sie auf die Linkklicks des Benutzers im WebView warten. Wie dies zu tun ist, wurde bereits in dieser Antwort hier auf SO behandelt:
Detect klicken Sie auf HTML-Schaltfläche über JavaScript in Android WebView
Sie müssen bestätigen, dass es sich bei dem Klick tatsächlich um einen Link zu einer neuen Seite handelt. Sie können das angeklickte HTML-Element über die WebView-Klasse HitTestResult finden. Diese Antwort auf SO gibt Ihnen die Details zum Überprüfen des HitTestResult-Werts:
Holen Sie sich das Click-Ereignis von der Webseite in meinem Android Anwendung
Sie starten Ihre Animation von Ihrer onClick () -Methode und beenden sie von der Methode onPageFinished () Ihres WebViewClients und, falls die neue Seite nicht geladen wird, auch in onReceivedError ().
Sie können das Konzept der Threads verwenden.
Bis die URL in der Webansicht geladen wird, zeigen Sie die Ladeanimation an Wenn die URL geladen ist, stoppen Sie die Animation.
Sie müssen zwei Threads verwenden, einen für den Fortschrittsindikator (d. h. URL Loading) und den anderen UI-Thread für Ihre Animation.
Suche danach!
Tags und Links android android-webview android-animation menuitem