我有一个应用程序显示启动页面,并在WebView中加载URL时删除该启动页面。以下是我们用于删除启动页面的相关代码:
browser.setWebViewClient(new BrowserClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
// Work around for WebView onPageFinished called twice
if (flag == true) {
browser.setVisibility(View.VISIBLE);
splashImage.setVisibility(View.INVISIBLE);
pageLoader.setVisibility(View.INVISIBLE);
} else {
flag = true;
}
}
});
此代码有效...除了它很慢。在网页加载很久之后,启动页面的删除时间太长了。
有关WebView加载页面时如何可靠检测的提示吗?我过去几天一直在研究这个问题,而且我似乎无法想出任何可靠的东西。
我看到的最有希望的是以下内容,但是在Android控制台中输入此代码会引发错误:
@Override
public void invalidate() {
super.invalidate();
if (getContentHeight() > 0) {
// WebView has displayed some content and is scrollable.
}
}
谢谢!
编辑:有很多答案提议onPageFinished,甚至有人将此标记为副本,并带有使用onPageFinished的解决方案的链接。伙计,我们已经在使用onPageFinished 。我们正在寻找onPageFinished的替代方案,因为它是多么不可靠。
答案 0 :(得分:2)
如果您需要,可以通过使用此Web客户端加载页面进度来实现此目的,您也可以使用此功能。
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
Log.e("progress", ""+progress);
if (progress == 100) { //...page is fully loaded.
// TODO - Add whatever code you need here based on web page load completion...
}
}
});
答案 1 :(得分:0)
您应该使用WebChromeClient.onProgressChanged()来获取加载页面的当前进度。
答案 2 :(得分:0)
如果您使用的启动画面是一个简单的静态图像,那么您可以尝试以下方法:
在XML中,在WebView中嵌套启动画面(ImageView):
strtol()
现在是运行时代码:
<WebView android:id="@+id/wv_your_web_view_id"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView android:id="@+id/iv_your_splash_screen_id"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/img_the_coolest_image_ever"
android:contentDescription="@string/splash_screen_desc"/>
</WebView>
... 这可以保证您可以从WebView中直接访问启动画面,因此可以在您请求的网页可供查看时立即停用或隐藏它。
答案 3 :(得分:0)
这可以通过将WebViewClient()用于webview来完成。