android - 如何在等待 HttpResponse 时显示进度条?

标签 android webview progress-bar

我是android开发的新手。

我开发了一个 android 网络应用程序。当我单击该网页的子菜单或链接时,相关文章是使用 XML 格式的 rss 提要从网站获取的。

此过程需要一些时间来加载页面。我想在内容加载时显示进度条。

我试过下面的代码:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
   dialog = ProgressDialog.show(this,"","Loading...");
    dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);//to remove title bar
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    //to remove notification bar
    setContentView(R.layout.main);
    wv = (WebView)findViewById(R.id.webview);
    wv.getSettings().setJavaScriptEnabled(true);
    wv.setBackgroundColor(0);
    wv.setWebViewClient(new WebViewClient() {});
    wv.loadUrl("file:///android_asset/HomePage.html");

}
@Override
protected void onSaveInstanceState(Bundle outState)
{
    super.onSaveInstanceState(outState);
    // Save the state of the WebView
    wv.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
    super.onRestoreInstanceState(savedInstanceState);
    // Restore the state of the WebView
     wv.restoreState(savedInstanceState);
}


public class mywebclient extends WebViewClient{

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
        dialog.show();
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub
        view.loadUrl("file:///android_asset/HomePage.html");
        return true;
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        // TODO Auto-generated method stub
        super.onPageFinished(view, url);
        dialog.dismiss();

    }

}

}

它只在首页显示进度条,并且在页面完全加载后也没有关闭。

当从该网页单击子菜单或链接时,我应该怎么做才能显示进度条。?提前致谢。

最佳答案

试试这段代码

package your.app;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class Main extends Activity {

WebView webview;

final Activity activity = this;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    this.getWindow().requestFeature(Window.FEATURE_PROGRESS);

    setContentView(R.layout.main);

    getWindow().setFeatureInt(Window.FEATURE_PROGRESS,
            Window.PROGRESS_VISIBILITY_ON);

    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setJavaScriptEnabled(true);

    final ProgressDialog progressDialog = new ProgressDialog(activity);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.setMessage("Loading...please wait");
    progressDialog.setCancelable(true);

    webview.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

    });

    webview.loadUrl("http://www.mysite.com/mobile/");

    // WebChromeClient give progress etc info
    webview.setWebChromeClient(new WebChromeClient() {

        public void onProgressChanged(WebView view, int progress) {

            progressDialog.show();
            progressDialog.setProgress(0);
            activity.setProgress(progress * 1000);

            progressDialog.incrementProgressBy(progress);

            if (progress == 100 && progressDialog.isShowing())
                progressDialog.dismiss();
        }
    });

}

注意:不要忘记更改您的 list 文件以访问互联网

您可以进一步添加功能 返回键 检查互联网连接 隐藏标题栏 显示全屏

关于android - 如何在等待 HttpResponse 时显示进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9912425/

相关文章:

android - 使用 AES 的对称加密导致 cipher.init 上的 NullPointerException

android - 网站(静态或动态)转换为 Android 应用程序

java - 在 View 寻呼机中加载网页 View 的时间太多

c++ - QT进度条速度

android - ContentLoadingProgressBar 中的默认颜色更改

java - Android JodaTime 将 UTC 转换为用户时间

android - 如何更改 Android PopupMenu 宽度

java - 如何获取JSON数组内部的JSON对象

java - 允许通知 Android webview

java - 如何让进度条慢慢填充