【问题标题】:Android cannot capture picture from WebView, view.postDelay not runningAndroid 无法从 WebView 捕获图片,view.postDelay 未运行
【发布时间】:2017-09-29 21:28:21
【问题描述】:

我需要从我的 WebView 截屏,或者你可以说,将 html 转换为位图。

而且我在完成这项任务时遇到了麻烦。 view.postDelayd(new Runnable() { ... 不要创建新线程,我的抓图在哪里

private void Main {
    WebView webView = new WebView(this.context); //init WebView
    saveHtmlImage(webView);  //running method for capture picture
}

private void saveHtmlImage(final WebView webView){
    webView.setWebViewClient(new WebViewClient() {

        public void onPageFinished(WebView view, String url) {
            view.postDelayed(new Runnable() {  //trouble here
                @Override
                public void run() {
                    Picture picture = webView.capturePicture();
                    Bitmap b = Bitmap.createBitmap( picture.getWidth(),
                            picture.getHeight(), Bitmap.Config.ARGB_8888);
                    Canvas c = new Canvas(b);
                    picture.draw(c);
                }
            }, 100);
        }
    });

    //set HTML code for WebView
    webView.loadDataWithBaseURL(null, "<TABLE border=\"1\"\n" +
            "          summary=\"This table gives some statistics about fruit\n" +
            "                   flies: average height and weight, and percentage\n" +
            "                   with red eyes (for both males and females).\">\n" +
            "<CAPTION><EM>A test table with merged cells</EM></CAPTION>\n" +
            "<TR><TH rowspan=\"2\"><TH colspan=\"2\">Average\n" +
            "    <TH rowspan=\"2\">Red<BR>eyes\n" +
            "<TR><TH>height<TH>weight\n" +
            "<TR><TH>Males<TD>1.9<TD>0.003<TD>40%\n" +
            "<TR><TH>Females<TD>1.7<TD>0.002<TD>43%\n" +
            "</TABLE>", "text/html", "UTF-8", null);
}

当我不使用 Runnable 时,Bitmap.createBitmap(...) 给出异常 - java.lang.IllegalArgumentException: 宽度和高度必须 > 0。

当我使用时

Handler handler = new Handler();
handler.postDelayed(new Runnable() {

考虑

view.postDelayd(new Runnable() {

方法

webView.capturePicture();

返回空白截图,但宽度和高度正确

请帮帮我。

说我做错了什么,或者给我另一个可以将html代码转换为位图图像的代码示例。

提前感谢您的回复。

【问题讨论】:

    标签: java android html webview bitmap


    【解决方案1】:

    只需强制适应全屏并编码标准屏幕截图并转换为位图。如果您需要示例,请告诉我。

    【讨论】:

    • 我不能全屏,因为我不在 Activity 中使用 webview。只有这样的初始化 code WebView webView = new WebView(context); code
    • 从那时起你在哪里做这个代码?你在你的应用程序里面对吗?如果你在你的应用程序中,那么你有一个上下文。如果您可以控制向屏幕添加元素,那么您当然可以截取它们。
    猜你喜欢
    • 1970-01-01
    • 2016-07-24
    • 2013-09-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多