Autore Topic: Problema visualizzazione WebView  (Letto 423 volte)

Offline darkmax

  • Utente junior
  • **
  • Post: 62
  • Respect: 0
    • Mostra profilo
    • Emoe - Agenzia di comunicazione Torino
  • Dispositivo Android:
    Samsung Galaxy S 3
  • Sistema operativo:
    Mac OS X
Problema visualizzazione WebView
« il: 26 Marzo 2013, 15:45:21 CET »
0
Buongiorno a tutti.. Io ho una WebView che carica un html con js..
Ho la necessità che l'applicazione carichi completamente l'html prima di visualizzare la mappa. Se clicco velocemente sul bottone che mi visualizza la view, questa non è correttamente centrata. Se lancio l'applicazione ed attendo qualche secondo.. la view è visualizzata correttamente.. Coe posso fare? Io ho creato una classe MyWebViewClient:

Codice (Java): [Seleziona]
import android.graphics.Bitmap;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyWebViewClient extends WebViewClient {
    boolean timeout;

    public MyWebViewClient() {
        timeout = true;
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                if(timeout) {
                    // do what you want
                }
            }
        }).start();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        timeout = false;
    }
}

E poi la classe che la usa:

Codice (Java): [Seleziona]
@Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
            setContentView(R.layout.maps_home);
           
            home = (Button)findViewById(R.id.map_map_right_button);
           
        wv = (WebView)findViewById(R.id.webView_map);
       
        wv.setWebViewClient(new MyWebViewClient());
       
       
        /* This will load a file in the asset folder (works) */  
        final View zoom = wv.getZoomControls();
        zoom.setVisibility(View.GONE);
        wv.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        wv.setScrollbarFadingEnabled(true);

        WebSettings ws = wv.getSettings();
        ws.setLoadWithOverviewMode(true);
        ws.setUseWideViewPort(true);
        ws.setBuiltInZoomControls(true);
        ws.setSupportZoom(true);

E il layout:

Codice (Java): [Seleziona]
 <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_gravity="center_vertical" >

        <WebView
            android:id="@+id/webView_map"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_gravity="center_horizontal"
            />
       
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/element_top_gradient" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            android:adjustViewBounds="true"
            android:src="@drawable/element_bottom_gradient" />
    </FrameLayout>


Cosa posso fare per far si che attenda correttamente il caricamento? Ho provato a mettere uno sleep di 10 secondi ma non va. Grazie a tutti.

Offline lorux

  • Utente junior
  • **
  • Post: 97
  • Respect: +12
    • Google+
    • lor.catalano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S2
  • Sistema operativo:
    Windows
Re:Problema visualizzazione WebView
« Risposta #1 il: 26 Marzo 2013, 16:11:01 CET »
0
beh disabilita il bottone e abilitalo quando la pagina ha finito di caricare (onPageFinished?)

Offline Giamme

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    appLOOPiamo
  • Sistema operativo:
    Windows 7
Re:Problema visualizzazione WebView
« Risposta #2 il: 26 Marzo 2013, 16:15:45 CET »
0
Devi "chekare" che la variabile timeout sia settata su false .


Codice (Java): [Seleziona]
if(timeout == false) {
                    // do what you want
                }
"Tutto ciò che è necessario per il trionfo del male è che gli uomini buoni non facciano nulla."
Edmund Burke

Offline darkmax

  • Utente junior
  • **
  • Post: 62
  • Respect: 0
    • Mostra profilo
    • Emoe - Agenzia di comunicazione Torino
  • Dispositivo Android:
    Samsung Galaxy S 3
  • Sistema operativo:
    Mac OS X
Re:Problema visualizzazione WebView
« Risposta #3 il: 26 Marzo 2013, 16:51:42 CET »
0
beh disabilita il bottone e abilitalo quando la pagina ha finito di caricare (onPageFinished?)

Non posso disabilitare il bottone. Non c'è un modo per dire di aspettare a disegnare la WebView?