在将URL加载到WebView时显示ProgressBar

詹西·亚伯拉罕

加载网址时是否可以显示进度条?我需要在进度栏中显示进度级别,可以使用自定义进度栏。但是我无法找到代码以获取有关已加载url的确切进度的信息。这是我当前的代码:

  public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    browser = (WebView)findViewById(R.id.webView1);
    progressBar = (ProgressBar)findViewById(R.id.progressBar);
    browser.setWebViewClient(new MyBrowser());
    browser.setWebChromeClient(new MyCustomChromeClient());
    mContext=this.getApplicationContext();
    browser.loadUrl(target_url);
    MainActivity.this.progressBar.setProgress(0);
}

private class MyBrowser extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        String host = Uri.parse(url).getHost();
        if (host.equals(target_url_prefix))
        {
            if(mWebviewPop!=null)
            {
                mWebviewPop.setVisibility(View.GONE);
                baseLayout.removeView(mWebviewPop);
                mWebviewPop=null;
            }
            return false;
        }

        if(host.equals("m.facebook.com"))
        {
            return false;
        }
        view.loadUrl(url);
        return true;
    }

    @Override
    public void onReceivedError(WebView view, int errorCode,
                                String description, String failingUrl) {
        noInternet();
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        visible();
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        unvisible();
        System.out.println("\n" +view.getUrl());
        if(url.startsWith("https://m.facebook.com/v2.1/dialog/oauth")){
            if(mWebviewPop!=null)
            {
                mWebviewPop.setVisibility(View.GONE);
                baseLayout.removeView(mWebviewPop);
                mWebviewPop=null;
            }
            view.loadUrl(redirectUrl);
            return;
        }
        super.onPageFinished(view, url);
    }
}

private class MyCustomChromeClient extends WebChromeClient
{

    @Override
    public boolean onCreateWindow(WebView view, boolean isDialog,
                                  boolean isUserGesture, Message resultMsg) {
        mWebviewPop = new WebView(mContext);
        mWebviewPop.setVerticalScrollBarEnabled(false);
        mWebviewPop.setHorizontalScrollBarEnabled(false);
        mWebviewPop.setWebViewClient(new MyBrowser());
        mWebviewPop.getSettings().setJavaScriptEnabled(true);
        mWebviewPop.getSettings().setSavePassword(false);
        mWebviewPop.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT));
        baseLayout.addView(mWebviewPop);
        WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
        transport.setWebView(mWebviewPop);
        resultMsg.sendToTarget();

        return true;
    }

    @Override
    public void onCloseWindow(WebView window) {
    }

    @Override
    public void onProgressChanged(WebView view, int newProgress) {
        MainActivity.this.setValue(newProgress);
        super.onProgressChanged(view, newProgress);
    }
}
public void setValue(int progress) {
    this.progressBar.setProgress(progress);
}
}

如何获得加载网址的确切进度。使用此代码,我可以加载进度条,但显示为不确定的进度条。我想显示一个进度条,这是一个自定义视图。它应该显示成功加载URL的百分比。因此,我可以夸大自定义视图,但我又不知道如何获得准确的百分比。有人可以帮我这个代码。

沙达布·米尔扎(Shadab Mirza)

WebChromeClient的onProgressChanged()为您提供有关页面加载状态的进度。请从android api文档中查看有关该函数的以下信息。

public void onProgressChanged (WebView view, int newProgress)

Added in API level 1
Tell the host application the current progress of loading a page.

Parameters
view    The WebView that initiated the callback.
newProgress Current page loading progress, represented by an integer between 0 and 100.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在将URL加载到WebView时显示ProgressBar

来自分类Dev

我将URL加载到Webview时,Android Studio:“ NullPointerException”

来自分类Dev

将外部URL加载到WebView

来自分类Dev

当我将URL加载到Webview时,Android Studio:“ NullPointerException”

来自分类Dev

仅在将fileInput加载到Shiny中时显示sliderInput

来自分类Dev

将PDF加载到android webview中

来自分类Dev

将PDF加载到android webview中

来自分类Dev

将 UIImage 加载到 WebView Swift 4

来自分类Dev

在WebView Android中加载URL时如何显示进度栏

来自分类Dev

Xcode 5将URL加载到带有WebView的新View Controller中

来自分类Dev

从sdcard将html加载到android中的webview时出现HTML,css,js问题?

来自分类Dev

将大图片(5 MB)或GIF加载到WebView时内存不足

来自分类Dev

将大图片(5 MB)或GIF加载到WebView时内存不足

来自分类Dev

将图像从URL加载到gridview

来自分类Dev

将字体从URL加载到枕头

来自分类Dev

将图片从URL加载到gridview

来自分类Dev

将图像从URL加载到gridview

来自分类Dev

将 ArrayList URL 加载到 ViewHolder

来自分类Dev

将页面加载到QWebView时覆盖

来自分类Dev

将数据加载到WKInterfaceTable时出错

来自分类Dev

将 CSV 加载到表格时出错

来自分类Dev

仅在将数据加载到闪亮的应用程序中时显示框

来自分类Dev

在将数据加载到gridView时显示图像-vb.net

来自分类Dev

如何将此URL加载到WebView中?

来自分类Dev

使用查询将图像加载到Webview中会导致NullPointerEx

来自分类Dev

将图像从可绘制文件夹加载到Webview

来自分类Dev

Android:将AMP格式的HTML加载到WebView中

来自分类Dev

将图像从本地android存储加载到WebView

来自分类Dev

如何从变量将HTML内容加载到UWP WebView中

Related 相关文章

热门标签

归档