|
|
1
747
延伸 WebViewClient 打电话给我 onPageFinished
|
|
|
2
157
@伊恩,这不是100%准确。如果一个页面中有多个iframe,则会有多个onPageFinished(和onPageStarted)。如果你有几个重定向也可能失败。这种方法解决了(几乎)所有问题:
更新: 当嵌入帧的内容发生更改时,即单击目标为iframe的链接时,不会调用onPageStarted。 我在Twitter上发现了这样一个特殊的例子,只调用了pageFinished,逻辑有点混乱。为了解决这个问题,我添加了一个计划任务,在X秒后删除加载。在其他所有情况下都不需要这样做。 更新2 现在使用当前的Android WebView实现:
|
|
|
3
40
我非常偏爱@NeTeInStEiN(和@polen)的解决方案,但我会用一个计数器来实现它,而不是用多个布尔函数或状态观察器(这只是另一种风格,但我认为可能是相同的)。它确实有一些细微的差别,但我觉得逻辑更容易理解。
|
|
|
4
30
|
|
|
5
23
我简化了 NeTeInStEiN 的代码如下:
|
|
|
6
21
如果要显示进度条,则需要侦听进度更改事件,而不仅仅是页面的完成:
顺便说一句,如果您只想显示一个不确定的ProgressBar,覆盖onPageFinished方法就足够了 |
|
|
7
6
|
|
|
8
5
你可以通过 getProgress webview 初始化进度状态
|
|
|
9
5
谢谢你的回答。它帮助了我,但我必须改进它一点,以满足我的需要。我有几个pagestart和finishes,所以我添加了一个计时器来检查pagefinish是否启动了一个新的pagestart。好吧,糟糕的解释。参见代码:)
|
|
|
10
3
下面是一种新的方法,通过利用
Android's capability for JavaScript hooks
src/io/github/cawfree/webviewcallback/MainActivity.java
res/layout/activity\u main.xml文件
本质上,我们附加了一个额外的JavaScript函数,用于测试文档的状态。如果已经加载了,我们会启动一个自定义
因为我们在调用
|
|
|
11
2
只要显示进度条,“onPageStarted”和“onPageFinished”方法就足够了;但是,如果您想有一个“is\u loading”标志(连同页面重定向,…),这个方法可以不按顺序执行,比如“onPageStarted>onPageStarted>onPageFinished>“onPageFinished”队列。 但在我的简短测试(自己测试)中,“onProgressChanged”方法值队列是“0-100>0-100>0-100>…”
“也设置”
|
|
|
12
2
对于Kotlin用户:
|
|
|
13
0
正在加载url
|
|
|
14
0
这里有一个方法可以让你注册一个
|
|
|
15
0
当调用OnPageFinshed方法或进度达到100%时,渲染器将无法完成渲染,因此这两种方法都不能保证视图已完全渲染。 但您可以从OnLoadResource方法中找出哪些已经呈现,哪些仍在呈现。这个方法被多次调用。
|
|
|
16
0
webView.setWebViewClient(对象:WebViewClient(){
//您还应该为错误重写其他重写方法,例如onReceiveError,以查看如何逐个调用所有这些方法,以及在使用断点进行调试时它们的行为。 } |
|
|
17
0
这将在他开始加载页面之前调用
(并获得与
|
|
|
18
0
Kotlin溶液 第一个解决方案
|