就是使用WebChromeClient中的onProgressChanged()方法呀,和你说的一样。精确度的话其实反映大概的情况了,如果不追求的十分准确的话。
至于进度条,你只需要使用系统自带的ProgressBar就可以,在其属性中添加设置:
android:layout_width="match_parent"
android:layout_height="2dp"
android:maxHeight="2dp"
android:minWidth="2dp"
android:indeterminate="false"
android:indeterminateOnly="false"
android:progressDrawable="@drawable/browser_progress_bar_layer_list"
browser_progress_bar_layer_list.xml自定义内容参考这个链接:
https://github.com/mthli/Berries/blob/master/Berries/res/drawable/browser_progress_bar_layer_list.xml然后使用WebChromeClient的onProgressChanged()方法获得当前的进度值,并且对ProgressBar添加一些动画:
// progressBar是你自己的ProgressBar,
// progress为当前进度值,
// animTime是你自定义的动画时间
ObjectAnimator animator = ObjectAnimator.ofInt(progressBar, "progress", progress);
animator.setDuration(animTime);
animator.setInterpolator(new DecelerateInterpolator());
animator.start();
大概按照以上步骤你就可以实现一个带动画效果推进的进度条了,进度条颜色啥的可以模仿browser_progress_bar_layer_list.xml自定义。