美文网首页Android AppAndroid开发经验谈Android开发
Android在H5加载完成前显示加载进度条

Android在H5加载完成前显示加载进度条

作者: 肖丹晨 | 来源:发表于2017-10-20 13:37 被阅读72次

    前言

    H5加载慢,想要在移动端显示加载进度?答案就是这么简单!
    欢迎加入学习小组QQ群: 193765960

    版权归作者所有,如有转发,请注明文章出处:https://xiaodanchen.github.io/archives/

    相关文章
    Android在H5加载完成前显示加载进度条
    Android 在H5加载完成前显示加载进度条2

    实现方案:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_webpage);
        initData();
        initView();
        //注意:不要在mWebView loadUrl的时候显示进度条,因为这时候有可能你的webActivity的view还没有初始化,造成activity 的content view覆盖了进度条。
        showLoading();
    }
    
    mWebView.setWebChromeClient(new WebPageChromeClient(){
      @Override
      public void onProgressChanged(WebView view, int newProgress) {
        //第二次更新:随着mwebview的设置不停增加。不知道什么时候发现进度条又不可见了。
        //这时候需要加入以下代码:
        //if(mProgressBar.getVisibility()==ProgressBar.GONE){
        //  mProgressBar.setVisibility(ProgressBar.VISIBLE);
        //}
        //以上三行代码可以暂时解决问题,mProgressBar是我在BaseActivity中自己定义的对象。
        if(mProgressBar.getVisibility()==ProgressBar.GONE){
            mProgressBar.setVisibility(ProgressBar.VISIBLE);
        }
        
        ///////////////////////////////////////////////////
        if(newProgress == 100){
            cancelLoading();//取消进度条显示
        }
        super.onProgressChanged(view, newProgress);
      }
    });
    

    错误方案:

    假如你使用了onPageFinished()方案,那么恭喜你,你很有可能掉坑里了。因为url如果存在重定向等情况,onPageFinished会多次调用,而且很有可能,H5的界面还没有真正加载显示,你的loading界面就取消掉了。

    相关文章

      网友评论

        本文标题:Android在H5加载完成前显示加载进度条

        本文链接:https://www.haomeiwen.com/subject/ueqvuxtx.html