- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只想知道 html 页面何时加载。在加载整个页面之前调用 OnPageFinished。当我通过从 WebView 创建的位图设置 ImageView 时,我得到了空白 View
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setAlwaysDrawnWithCacheEnabled(true);
mWebView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon){
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view,String url){
Bitmap b = Bitmap.createBitmap( 480, 240, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
view.draw(c);
mImageView.setImageBitmap(b);
//b.recycle();
}
});
编辑:
我现在尝试只通过制作 Toast 消息来实现 JavaScriptInterface,但它仍然不起作用。我已经粘贴了 html 代码和 Java:
编辑:
我终于让它工作了。我将 JavaScriptInterface 与适当的 .当 loadUrl 启动时,正在加载 html 文件。当整个页面在屏幕上可用时,html 文件中的 onload 函数调用 JavaScriptInterface 类中的 captureImage 函数。现在我确定该页面已完全加载,我可以抓取它的图片。感谢所有帮助。
代码:
Java:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setDrawingCacheEnabled(true);
mWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android");
mWebView.setWebViewClient(new WebViewClient(){});
mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mWebView.loadUrl("file:///android_asset/html_sample.html");
//mWebView.loadUrl("https://www.onet.pl");
}
});
public class JavaScriptInterface {
private Context mContext;;
public JavaScriptInterface(Context context) {
mContext = context;
}
@JavascriptInterface
public void captureImage(){
Bitmap b = mWebView.getDrawingCache(true);
mImageView.setImageBitmap(b);
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
HTML:
<html>
<head>
<title>My first styled page</title>
<link rel="stylesheet" href="sample_css.css">
</head>
<body onload="function(){ Android.captureImage() }">
...
</body>
</html>
最佳答案
这是因为onPageFinished
表示“页面加载完成”,而不是“页面显示在屏幕上”。不幸的是,WebView 没有“您想要的页面现在显示在屏幕上”API。人们通常求助于 PictureListener(由于不可靠而被弃用)和随机超时(超长或在某些设备上不起作用)的组合。
您可以尝试渲染成一个小位图并在每个 PictureListener
回调中检查它是否全白(并记住在您完成等待后停止这样做,否则您会烧掉大量CPU 如果页面有动画/gifs/等..)。如果页面有大图像,渲染成小位图仍然会非常占用 CPU,因此这绝对不是一个好的解决方案。
关于android - onPageFinished 在页面加载之前触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24608655/
我只想知道 html 页面何时加载。在加载整个页面之前调用 OnPageFinished。当我通过从 WebView 创建的位图设置 ImageView 时,我得到了空白 View mW
我在 S/O 上看过几篇类似的帖子,但找不到我的问题的答案。我正在尝试从 Web View 中获取 html,但无法触发“onPageFinished() 回调。我什至尝试在 WebChromeCli
我有一个问题。我在我的项目中使用 WebView 对象。在 MainActivity.java 代码端我使用 webbBrowser.setWebViewClient(new ViewBrowser(
我想在页面加载完成后截取 Web View 的屏幕截图。所以我尝试在 onPageFinished() 中添加 getSnapShot(),但是当调用 getSnapShot() 时,页面没有加载。所
似乎我犯了一些错误,或者我遗漏了一些关于 public class myWebViewClient 类和 public void onPageFinished(WebView view, String
基本上我的搜索引擎标志经常更新。问题是网页永远不会更新,除非我重新安装应用程序,所以我禁用了缓存。 但是它一直在说: Cannot resolve method 'onPageFinished(and
我正在使用 Webview 加载 url,第一次一切正常。如果我第二次加载 url(用于刷新页面以及加载不同的 url),则不会触发 onPageFinished。 mWvClient = new W
我遇到了一个使用 Android WebView 小部件的奇怪场景: 我有两个 Activity ,我们称它们为 A 和 B。A 有一个按钮和一个 webview。单击 A 中的按钮将启动 B。B 只
我仍然是编程的初学者,目前我的 web View 有代码,我有一个 onPageFinished ,里面有 JavaScript 代码,可以从我的 web View 检索纯文本。但 onPageFin
我觉得不得不问这个问题很愚蠢,但我一辈子都做不到。 所以我四处搜索并找到了很多关于在 WebViewClient 中使用 onPageFinished 函数的帮助、指南等,我的代码主要基于这些。 基本
由于某种原因,onPageFinished 在 WebView 完成加载之前触发 - 我不明白为什么...... public class WebViewClientTest extends Acti
我想在 webview 完全加载时显示 toast 。但是 toast 从来没有出现过,我不知道为什么..这是我的代码: public class WebViewSignUp extends Acti
我有一个 Activity 通过拦截重定向 url 一旦它显示在 web View 中来进行 OAuth 身份验证。但是,由于某种原因,onPageFinished 函数被调用了两次,这真的弄乱了我的
我有以下内容成功地正确修改了 boolean 值的状态: protected void onCreate(Bundle savedInstanceState) { super.onCreate
我尝试从 onPageFinished 方法内部获取字符串,但找不到方法我只想要 onPageFinished 方法中存在的扩展链接,问题是无论我使用什么字符串,它都会出现 null final W
您好,我正在尝试创建一个 WebView 应用程序,我想创建一个等待对话框,直到页面加载完毕。 但是我尝试了不同的解决方案,但我无法弄清楚为什么它在互联网上为其他人工作时不起作用。它在 Xamarin
我有一个 webview,它必须在调用 onReceivedError() 时创建一个 LOG。但问题是,当我的 wifi 连接非常糟糕(几乎 100% 丢失)并且 webview 显示页面不可用 h
我正在使用 webview 来显示打印预览,问题是有时 webview 不显示。发生这种情况时,不会调用 onPageFinished() 回调。我觉得奇怪的是它在大多数时候都有效,但有时却无效。 W
我的 android webview 函数 onPageFinished 被调用了两次。我不知道为什么,但它在 android 2.2 上运行良好,但是当我将它升级到 4+ 时它不起作用。代码附在下面
我的问题不同于this一个人..我希望我的进度对话框在页面加载开始时启动,并在我的 web View 中页面加载完成时结束。我的问题是进度对话框启动并且永远不会被解雇。我设置了断点它表明进度对话框启动
我是一名优秀的程序员,十分优秀!