盒子
盒子
文章目录
  1. 实现方案:
  2. 错误方案:

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

前言

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

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

实现方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@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界面就取消掉了。

扫描加群
好好学习,天天向上!