Android WebView进度条

我在这里看到类似于这个问题,但作为一个新手可以解释如何得到这个工作在WebView或至less如何设置一个10秒的延迟,让人们知道它的加载?

对于水平进度条,首先需要在onCreate定义进度条并将其与XML文件链接,如下所示:

 final TextView txtview = (TextView)findViewById(R.id.tV1); final ProgressBar pbar = (ProgressBar) findViewById(R.id.pB1); 

然后,您可以在WebChromeClient中使用onProgressChanged方法:

 MyView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { if(progress < 100 && pbar.getVisibility() == ProgressBar.GONE){ pbar.setVisibility(ProgressBar.VISIBLE); txtview.setVisibility(View.VISIBLE); } pbar.setProgress(progress); if(progress == 100) { pbar.setVisibility(ProgressBar.GONE); txtview.setVisibility(View.GONE); } } }); 

之后,在你的布局中,你有这样的东西

 <TextView android:text="Loading, . . ." android:textAppearance="?android:attr/textAppearanceSmall" android:id="@+id/tV1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:textColor="#000000"></TextView> <ProgressBar android:id="@+id/pB1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:padding="2dip"> </ProgressBar> 

这是我在我的应用程序中做到的。

我刚刚发现了一个非常好的例子,在这里: http : //developer.android.com/reference/android/webkit/WebView.html 。 你只需要改变setprogress从:

 activity.setProgress(progress * 1000); 

 activity.setProgress(progress * 100); 

这里是在Android Web视图中添加进度条的最简单的方法。

在您的活动/片段中添加一个布尔字段

 private boolean isRedirected; 

这个布尔值将防止死链接的网页redirect。现在,您可以将您的WebView对象和Web Url传递到此方法。

 private void startWebView(WebView webView,String url) { webView.setWebViewClient(new WebViewClient() { ProgressDialog progressDialog; public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); isRedirected = true; return false; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); isRedirected = false; } public void onLoadResource (WebView view, String url) { if (!isRedirected) { if (progressDialog == null) { progressDialog = new ProgressDialog(SponceredDetailsActivity.this); progressDialog.setMessage("Loading..."); progressDialog.show(); } } } public void onPageFinished(WebView view, String url) { try{ isRedirected=true; if (progressDialog.isShowing()) { progressDialog.dismiss(); progressDialog = null; } }catch(Exception exception){ exception.printStackTrace(); } } }); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url); } 

这里当开始加载它将调用onPageStarted 。 这里我设置布尔字段是假的。 但是,当页面加载完成后,它会来onPageFinished方法,这里布尔字段设置为true。 有时如果URL死了,它将redirect,它会在onPageFinished方法之前onPageFinished onLoadResource() 。 为此,它不会隐藏进度条。 为了防止这个我检查if (!isRedirected) onLoadResource()

onPageFinished()方法解除进度对话框之前,您可以编写您的10秒延时代码

而已。 快乐编码:)

确实如此,还有更完整的select,比如改变你想要的句子的应用名称。 检查这个教程,它可以帮助:

http://www.firstdroid.com/2010/08/04/adding-progress-bar-on-webview-android-tutorials/

在这个教程中,你有一个完整的例子,如何在webview应用程序中使用进度条。

阿德里安。

根据Md。Sajedul Karim的回答,我写了一个类似的文章。

 webView = (WebView) view.findViewById(R.id.web); progressBar = (ProgressBar) view.findViewById(R.id.progress); webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); progressBar.setVisibility(View.VISIBLE); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); progressBar.setVisibility(View.GONE); } @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { super.onReceivedError(view, request, error); Toast.makeText(getActivity(), "Cannot load page", Toast.LENGTH_SHORT).show(); progressBar.setVisibility(View.GONE); } }); webView.loadUrl(url); 

等到这个过程结束了

 while(webview.getProgress()< 100){} progressBar.setVisibility(View.GONE); 
  webview= (WebView) findViewById(R.id.web); webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { WebActivity .setTitle("Loading..."); WebActivity .setProgress(progress * 100); if(progress == 100) WebActivity .setTitle(R.string.app_name); } }); webview.setWebViewClient(new WebViewClient()); webview.getSettings().setJavaScriptEnabled(true); webview.loadUrl("http://google.com"); 

欲了解更多参考请点击http://androiddhina.blogspot.in/2015/05/android-load-webview-with-progressbar.html