在Android我用来显示来自服务器的文章的应用程序Activity中WebView。
例如,我想在屏幕上完全绘制数据(文本和图像)后显示一条消息。
这是它的样子WebView:
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
// Пробовал этот метод:
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
System.out.println("Progress = "+ progress);
}
});
webView.addJavascriptInterface(this, "android");
webView.loadDataWithBaseURL(
"",
asHtmlPage(intent.getStringExtra("content")),
"text/html",
"utf-8",
null
);
我只从服务器获取没有脚本的文章,body并将它们调整为我需要的格式,如下所示:
private String asHtmlPage(String body) {
String textUpd = body.replaceAll("<img ", "<img onclick=\"myFunctionGet(this.src)\" ");
String style = "<style>" +
" body { margin: 0; padding: 16; font-family: sans-serif-light, sans-serif; word-wrap: break-word;}" +
" P:first-letter { margin-left: 20px; } " +
" img { margin-left: -16; margin-right: -16; display: inline; height: auto !important; max-width: 100vw; } " +
"</style>";
String meta = "<meta name='viewport' content='width=device-width, initial-scale=1'>";
String myScript = "<script> function myFunctionGet(s) { android.getUri(s); } </script>";
return "<html><head>" + style + meta + myScript + "</head><body>" + textUpd + "</body></html>";
}
尝试使用:
webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
System.out.println("Progress = "+ progress); // от 0 до 100
}
});
但是在我得到 100% 的那一刻 - 图片还没有完全绘制在屏幕上。
您如何跟踪文章已完全加载并且所有元素已完全显示在屏幕上?
代替
对于此代码: