对于水平进度条,首先需要在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); } } });
之后,在你的布局中,你有这样的东西
这是我在我的应用程序中做到的。
我刚刚发现了一个非常好的例子,在这里: 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,比如改变你想要的句子的应用名称。 检查这个教程,它可以帮助:
在这个教程中,你有一个完整的例子,如何在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");
欲了解更多参考请点击
以上就是android开发分享Android WebView进度条相关内容,想了解更多android开发(异常处理)及android游戏开发关注(编程笔记)。