Webview. Feststellen ob die Seite vollständig geladen wurde.

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von zblack, 17.07.2012.

  1. zblack, 17.07.2012 #1
    zblack

    zblack Threadstarter Gast

    Hallo Android Freunde,
    Meine App beinhaltet zwei Seiten.
    Eine Startseite und die Webview.
    Beim Starten der App wird die Startseite solange angezeigt, bis die eine Webseite im Hintergrund vollständig geladen wird. Danach wird die geladene Webseite angezeigt.
    Wie kann ich feststellen, ob eine Webseite vollständig geladen wurde ?
    Ist sowas überhaupt möglich ?
    Mit freundlichen Grüßen.
     
  2. StefMa, 17.07.2012 #2
    StefMa

    StefMa Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Im WebViewClient gibt es eine Methode
    Code:
    onPageFinisshed()
    
    oder ähnluich. (Schau mal in der Doku)

    Die meldet sich, wenn die seite fertig geladen ist.

    Gruß
     
  3. zblack, 17.07.2012 #3
    zblack

    zblack Threadstarter Gast

    Danke für die antwort.
    Wie kann ich eigentlich den Verlauf der Seiten, die ich in der Webview eingegeben habe, anzeigen? Es gibt ja die Methode clearHistory. Also die History zu löschen ist es möglich, dann sollte es eigentlich auch möglich sein die History zu zeigen oder irre ich mich da ?
     
  4. StefMa, 17.07.2012 #4
    StefMa

    StefMa Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Es gibt einen Danke button ;)

    In der Doku finde ich jetzt nichts - habe sie nur überflogen.
    Du kannst ja aber alle links, die der user aufruft, in einer Datenbank speichern?!

    Gruß
     
  5. zblack, 18.07.2012 #5
    zblack

    zblack Threadstarter Gast

    Das mit dem Verlauf muss ich noch schauen.
    Jetzt mal was anderes.
    Wenn die WebView ne Seite öffnet, dann ist es so, als ob die Seite nen wenig nach links verschoben wird und dadurch ein weißes Streifen auf der rechten Seite entsteht.
    Kann man das irgendwie ändern ?
     
  6. StefMa, 18.07.2012 #6
    StefMa

    StefMa Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Es kommt wahrscheinlich drauf an, wie du dein WebView im xml (oder hast du es nur in Java geschrieben?) definierst.
    Einfach im xml:
    Code:
    <WebView
    android:layout_height="match_parent"
    android:layout_width="match_parent" />
    
    (Es gibt immer noch ein Danke button xD)
     
  7. zblack, 18.07.2012 #7
    zblack

    zblack Threadstarter Gast

    in xml habe ich jetzt bei width & height beides match_parent geschrieben. Ergebnis ist aber gleich geblieben .
     
  8. StefMa, 18.07.2012 #8
    StefMa

    StefMa Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Kannst du mal ein screen schicken oder quelltext. Heiteres raten bringt hier auch wenig...

    Gruß

    P.s.: Der button befindet sich neben dem zitier button xD
     
  9. swordi, 18.07.2012 #9
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    der weiße streifen ist der platz für die scrollbar
     
  10. zblack, 19.07.2012 #10
    zblack

    zblack Threadstarter Gast

    genau das ist er ja. Kann man den irgendwie abschalten dass er nur dann auftauchen soll wenn der benötigt wird ???
     
  11. zblack, 20.07.2012 #11
    zblack

    zblack Threadstarter Gast

    Quellcode für die Webview sieht so aus:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:persistentDrawingCache="scrolling" />
    
    Code für die Webview sieht so aus:
    Code:
    public class Browser extends Activity implements OnClickListener {
    
    	private WebView webView;
    	private String starturl = "http://www.google.de";
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.webbrowser);
    		webView = (WebView) findViewById(R.id.webview);
    		webView.getSettings().setJavaScriptEnabled(true);
    		webView.getSettings().setLoadWithOverviewMode(true);
    		webView.getSettings().setUseWideViewPort(true);
    		webView.setWebViewClient(new WebClient());
    		webView.loadUrl(starturl);
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		getMenuInflater().inflate(R.menu.menu, menu);
    		return true;
    	}
    
    	@Override
    	public boolean onOptionsItemSelected(MenuItem item) {
    
    		switch (item.getItemId()) {
    
    		case R.id.zuruck:
    			if (webView.canGoBack()) {
    				webView.goBack();
    			}
    			return true;
    		}
    	}
    
    
    	private class WebClient extends WebViewClient {
    		@Override
    		public boolean shouldOverrideUrlLoading(WebView view, String url)  {
    			view.loadUrl(url);
    			return true;
    		}
    	}
    }
    
    Wenn ich die App am Handy ausführe (im Hochformat) und in google irgendwas suche, und dann das Handy umdrehe, sodass ich das Bild im Querformat habe, dann lande ich wieder auf Startseite von google und muss wieder alles neu eingeben.
    Wie kann man das abstellen?
     
  12. zblack, 23.07.2012 #12
    zblack

    zblack Threadstarter Gast

    keiner eine idee ?
     
  13. eki89, 23.07.2012 #13
    eki89

    eki89 Junior Mitglied

    Beiträge:
    30
    Erhaltene Danke:
    8
    Registriert seit:
    02.06.2011
    Phone:
    HTC Desire HD
    Durch das drehen wird die onCreate-Methode aufgerufen. Das ist auch richtig so, da die Activity neu aufgebaut werden muss, weil sich das Seitenverhältnis geändert hat. Du könntest den Wert zwischenspeichern. Das ginge z.B. mit Shared Preferences. Beim Abbau der Activity wird die aktuelle URL gespeichert, beim onCreate wird die Information wieder aus dem Shared Preferences geholt.Hätte sogar den schönen Effekt, dass sogar beim Schließen der App der Wert weiterhin gespeichert bleibt, so das du beim erneuten betreten der Activity wieder auf der letzten besuchten Seite wärst.
     
  14. StefMa, 23.07.2012 #14
    StefMa

    StefMa Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Du kannst auch selbst Google oder?
    Anstatt hier jede Methode Funktion zu erfragen einfach mal googlen! Sollte wirklich nicht so schwer sein.
    Man das verhindern indem man in der manifest einen Wert einfügt/ändert. Welcher das genau ist weiß ich nicht. Ließ in der Doku, da steht es..

    Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
     
  15. zblack, 25.07.2012 #15
    zblack

    zblack Threadstarter Gast

    Naja googlen tue ich jedes Mal, wenn ich irgendwo nicht zurechtkomme und wenn ich nichts finde, dann frage ich eben hier nach. Sorry, wollte niemandem hier mit der Fragerei nerven.
     
  16. zblack, 25.07.2012 #16
    zblack

    zblack Threadstarter Gast

    soo, das mit dem Scrollbar und mit dem Verschieben der Seite dadurch nach links lässt sich mit folgendem Code abstellen: webView.setVerticalScrollBarEnabled(false);
    Ich vermute das mit dem Umdrehen des Handys lässt sich auch mit dem Aufruf irgendeiner Funktion abstellen. Habe die WebviewSettings Funktionen durchgeguckt, habe aber noch nix Passendes gefunden.
     
  17. StefMa, 25.07.2012 #17
    StefMa

    StefMa Gewerbliches Mitglied

    Beiträge:
    2,054
    Erhaltene Danke:
    413
    Registriert seit:
    16.10.2010
    Lies mal :)
    Solltest dir die AndroidManifest durchlesen und nicht die WebviewSettings ;)

    Gruß
     
  18. zblack, 25.07.2012 #18
    zblack

    zblack Threadstarter Gast

    oh gott, das ist noch einfacher als ich das überhaupt vorgestellt habe. android:configChanges="orientation" und das Problem ist weg.
    IceClaw danke. Habe echt woanders gesucht :D
     

Diese Seite empfehlen