webview中的进度对话框,qr代码扫描程序

时间:2014-03-25 15:28:54

标签: android webview progressdialog

    package net.sourceforge.zbar.android.CameraTest;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class WebViewActivity extends Activity {

    private WebView webView;

    @SuppressLint("SetJavaScriptEnabled")
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview);      
        String mUrl = getIntent().getStringExtra("mUrl");
        webView = (WebView) findViewById(R.id.web_engine);
        webView.setWebViewClient(new MyWebClient()); 
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(mUrl);



    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(event.getAction() == KeyEvent.ACTION_DOWN){
            switch(keyCode)
            {
            case KeyEvent.KEYCODE_BACK:
                if(webView.canGoBack()){
                    webView.goBack();
                }else{
                    finish();
                }
                return true;
            }

        }
        return super.onKeyDown(keyCode, event);
    }
}  

 class MyWebClient extends WebViewClient {

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


     }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            // TODO Auto-generated method stub

            return false;

        }


        }

我尝试在此代码中添加进度对话框,但应用停止了。我把它放在webclient类中但是在我运行应用程序后出现了进度对话框,但应用程序停止了。我已删除该部分,因此您可以看到工作代码。我该怎么做?

1 个答案:

答案 0 :(得分:1)

您必须在布局中添加ProgressBar对象,但是已隐藏。然后,当页面开始加载时,您将显示进度条:

ProgressBar progress = (ProgressBar) findViewById(R.id.progress);
progress.setVisibility(View.VISIBLE);

您甚至可以覆盖进度更改

@Override
public void onProgressChanged(WebView view, int percentage) {
    ProgressBar progress = (ProgressBar) findViewById(R.id.progress);
    progress.setProgress(percentage);
}

对于最后一个方法,您必须扩展WebChromeClient。