整页WebView屏幕截图无法正常工作

时间:2016-07-20 07:40:52

标签: java android

我想用它看不见的部分截取WebView的截图。当WebView的高度太长(例如20000像素)时,我面临的问题是屏幕截图的底部(例如7000 px)具有纯色。

这是我的代码:

Picture picture = webWiew.capturePicture();

Bitmap b = null;

try {
    b = Bitmap.createBitmap(picture.getWidth(),
    picture.getHeight(), Bitmap.Config.RGB_565);

    Canvas c = new Canvas(b);
    picture.draw(c);

catch (OutOfMemoryError outOfMemoryError) {

    }

这是截图:

enter image description here

3 个答案:

答案 0 :(得分:1)

你应该覆盖picture.draw()方法

答案 1 :(得分:1)

您可以逐部分割图片。

答案 2 :(得分:0)

将内容扩展到WebView会占用内存。根据实施情况,它会在屏幕外膨胀不同数量的数据,以使用户感觉顺畅。

所以,你的问题是最后一个(纯色)部分的数据根本不存在 :-)

您可以查看WebView的文档以查看是否可以使预加载偏移无限制,但我对此表示怀疑,因为它会导致大量的OutOfMemoryErrors。

编辑:

此外,.capturePicture()似乎已被弃用。请尝试以下代码段:

Picture picture = webWiew.capturePicture(); //Just to get real content dimensions, you can later look for another source of them

Bitmap b = null;

try {
    b = Bitmap.createBitmap(picture.getWidth(),
    picture.getHeight(), Bitmap.Config.RGB_565);

    Canvas c = new Canvas(b);
    webView.onDraw(c); //This changed

catch (OutOfMemoryError outOfMemoryError) {}