Animation beim Laden der Seite starten, auf geladener Seite anhalten

8

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%     
Kris B 08.05.2012, 23:54
quelle

3 Antworten

2

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 , als ein Beispiel.

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 ().

    
Gunnar Karlsson 11.05.2012 10:03
quelle
0

Machen Sie die Animation Variable zum Mitglied Ihrer Browser Klasse und vergewissern Sie sich, dass Sie die Animation stoppen, bevor Sie die Aktivität verlassen.

    
Ronnie 12.05.2012 16:45
quelle
0

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!

    
Dharmaraj Patil 18.05.2012 06:40
quelle