2017-12-19 2 views
0

Ich habe gesucht, aber ich kann keinen Fall finden, um mein Webview zu implementieren, mein Webview öffnet keine Webseite, es lädt nur ein HTML, das ich habe, also brauche ich eine Fortschrittsanzeige, bevor die Daten angezeigt werden eine progressBar in meinem Layout haben erklärt, und dies ist der Code, den ich die html innerhalb webview zeigenZeige einen ProgressDialog in einem WebView

mProgressBar = (ProgressBar) findViewById(R.id.pBar); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadDataWithBaseURL("", indicadores.toString(), "text/html", "UTF-8", ""); 

XML

<WebView 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:id="@+id/webview"/> 
      <ProgressBar 
       android:layout_width="300dp" 
       android:layout_height="300dp" 
       android:id="@+id/pBar" 
       android:layout_gravity="center"/> 

was der beste Ansatz ist es, die progressBar zu zeigen, bevor das Ergebnis zeigt.

Dank

+0

setzen Sie Ihre Layout-XML in Ihre Frage – diegoveloper

Antwort

0

In einem Browser mit einem Fortschrittsbalken den Fortschritt Inkrementen als Komponenten über das Netzwerk geladen werden.

Wenn Sie alle Webview-Daten lokal gespeichert haben, ist kein Fortschritt zu berichten. Es wird keinen Ort geben, an dem Sie den Fortschritt erhöhen können. Sie müssen die Webansicht verwenden, um den Renderfortschritt melden zu können, und dieser existiert nicht.

0

Sie haben Ihre eigene HTML-Datei und müssen sie nur mit Web-View anzeigen. Diese Seite kann nicht viel Zeit für das Rendern benötigen. Also, wenn Sie Fortschrittsbalken-Effekt setzen möchten, können Sie Runnable verwenden.

public class WebViewActivity extends AppCompatActivity { 

private WebView webView; 
private ProgressBar progressBar; 
private int waitingTime = 2000; // mSec. 
private Handler winHandler = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_web_view); 
    webView = (WebView) findViewById(R.id.webView); 
    progressBar = (ProgressBar) findViewById(R.id.progressBar); 
    progressBar.setVisibility(View.GONE); 
    webView.getSettings().setJavaScriptEnabled(true); 
    initWebView(); 
} 

private void initWebView() { 
    webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 
      progressBar.setVisibility(View.GONE); 

     } 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      progressBar.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 
      super.onReceivedError(view, request, error); 
      progressBar.setVisibility(View.GONE); 
     } 
    }); 
} 

private Runnable runnable = new Runnable() { 
    @Override 
    public void run() { 
     webView.loadDataWithBaseURL("", indicadores.toString(), "text/html", "UTF-8", ""); 
    } 
}; 



@Override 
protected void onResume() { 
    super.onResume(); 
    winHandler = new Handler(); 
    winHandler.postDelayed(runnable, waitingTime); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 

    if (winHandler != null) { 
     winHandler.removeCallbacks(runnable); 
    } 
} 

}

hier Wartezeit ist 2sec Sie es als ändern können pro Sie benötigen.