1
Archangel_SDY 2015-04-21 11:36:08 +08:00
其实很多浏览器的进度条是假的...
|
2
quix 2015-04-21 12:10:48 +08:00
应该是根据事件的... 我观察下来基本就是页面下载完了更新一下进度, 比如到20%, dom 下载完更新一下, 然后图片等资源全部下载完再更新一次
|
3
learnshare 2015-04-21 12:15:27 +08:00
不应该是网页提供这个效果么,浏览器不太容易抓到已经下载了 5/10 个文件这种数据吧
|
4
kzzhr 2015-04-21 12:21:30 +08:00 via Android
某浏览器经常进度条到90%然后等半天
某浏览器经常进度条到100%然后无法访问 某浏览器,对了你可以拿个gif实现,简单快捷 |
5
mthli 2015-04-21 13:18:41 +08:00 via Android
目前我正在写一个浏览器,完成度90%+,你可以参考一下我的代码。
项目地址: https://github.com/mthli/Berries 关注一下Browser目录下BrowserController.java中updateProgress()接口的具体实现就可以 :) |
6
Registering OP |
7
mthli 2015-04-21 15:03:18 +08:00
就是使用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自定义。 |
8
Registering OP @mthli
额,我觉得onProgressChanged方法应该是获得下载页面资源而已。。 很多页面加载完资源,还要花费不少时间渲染页面,所以当progress的值到100时,经常发现页面还是没加载完,,, 所以在找方法能更精确。 微信的公众号加载文章时的效果还OK |
9
mthli 2015-04-21 20:45:35 +08:00
@Registering 微信应该用的是它自己的浏览器内核吧,和系统自带的应该不一样。
|