使用ProgressBar for WebViewClient显示进度 [英] Show Progress using ProgressBar for WebViewClient

查看:148
本文介绍了使用ProgressBar for WebViewClient显示进度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用WebViewClient加载网页,我想显示代码的进度栏.我的代码没有逐步加载进度.它仅显示100%的进度.如何根据网页加载时间设置进度?

I am using WebViewClient to load web pages and I would like to show progress bar for my code. My code isn't loading the progress gradually. It only shows 100% progress. How do I set the progress based on web page loading time?

出于我的目的,我只需要在一个网页上加载" https://www.google.com "仅限WebView.请帮忙.谢谢你.代码如下所示:

For my purpose I have to load just "https://www.google.com" on a WebView only. Please help. Thank you. Code is shown below :

活动文件

public class MainActivity extends Activity {

private WebView webView;
private ProgressBar progressBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int vc = Color.parseColor("#feca01");


    progressBar = (ProgressBar) findViewById(R.id.determinateBar);
    progressBar.getProgressDrawable().setColorFilter(
            vc, android.graphics.PorterDuff.Mode.SRC_IN);
    webView = (WebView) findViewById(R.id.webView);
    webView.setWebViewClient(new MyBrowser());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("http://deelay.me/5000/http://www.google.com");

}

private class MyBrowser extends WebViewClient {

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon)
    {
        super.onPageStarted(view, url, favicon);
        progressBar.setVisibility(View.VISIBLE);
        progressBar.incrementProgressBy(10);

    }

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

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        progressBar.setVisibility(View.VISIBLE);
       // progressBar.setProgress(0);
    }
 }

}

XML文件

`

<ProgressBar
    android:id="@+id/determinateBar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_width="400dp"
    android:padding="0dp"
    android:layout_height="2dp" />

<WebView
    android:layout_height="match_parent"
    android:id="@+id/webView"
    android:layout_weight="0.91"
    android:layout_width="match_parent"
    android:padding="0dp"
    />

`

推荐答案

尝试这个我的朋友

WebView webView;
ProgressBar progressBar;

webView = (WebView) findViewById(R.id.web);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.loadUrl(url);

progressBar = (ProgressBar) findViewById(R.id.progressbar);
progressBar.setMax(100);
progressBar.setProgress(1);

webView.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
            progressBar.setProgress(progress);
        }
    });
        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 boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {

            progressBar.setVisibility(View.GONE);
        }
    });

布局

 <WebView
    android:id="@+id/web"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<ProgressBar
    android:layout_marginTop="-7dp"
    android:id="@+id/progressbar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="@android:color/transparent"
    android:indeterminate="false"
    android:max="100"
    android:progress="1"
    android:theme="@style/ProgressbarTheme" />

这篇关于使用ProgressBar for WebViewClient显示进度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆