Android webview上的Progressbar

时间:2011-11-09 12:37:56

标签: java android webview progress-bar

我很擅长开发Android应用。基本上我正在制作一个webview模板来显示移动优化网站的不同网址。

该应用有两页:
1个启动页面。
1个webview页面。

我已经完成了几个教程,这部分实际上正在工作,所以问题是......

我想在webview加载网站时显示进度条,然后在网站加载时消失。

我已经做了很多努力让它发挥作用,但没有成功。

XML文件:
基本上有ID:的网页视图和ID:progressbar的进度条(不确定是否应该在那里)

JAVA文件:
Link to preeview of java file

2 个答案:

答案 0 :(得分:4)

您忘记添加ProgressBar支持。

setContentView(R.layout.layout_file);

之前添加以下语句
// Adds Progrss bar Support
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);

然后在致电setContentView(R.layout.layout_file);后添加此行以显示进度条

// Makes Progress bar Visible
getWindow().setFeatureInt( Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON);

现在在onProgressChanged(WebView view, int progress)内你必须添加以下行:

//Make the bar disappear after URL is loaded, and changes string to Loading...
MyActivity.setTitle("Loading...");
MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded

// Return the app name after finish loading
    if(progress == 100)
         MyActivity.setTitle(R.string.app_name);

您可以在此处参考完整教程:ProgressBar in WebView。我只提到了该网站的代码。

修改

官方Android文档WebView

中的另一个示例

答案 1 :(得分:1)

您可以通过向“活动”添加新属性来实现此目的:

protected ProgressDialog dialog;

当您要打开网页时,请添加以下内容:

dialog = ProgressDialog.show(this, "LOADING", "Website is loading...", true);
YourWebView.loadUrl(url);

/* Prevent WebView from Opening the Browser */
YourWebView.setWebViewClient(new InsideWebViewClient());

然后必须扩展WebViewClient类并添加到onPageFinished方法:

protected class InsideWebViewClient extends WebViewClient {
  @Override
  public void onPageFinished(WebView view, String url)
  {
    super.onPageFinished(view, url);
    if(dialog != null && dialog.isShowing())
        dialog.dismiss();
  }
}