我想用它看不见的部分截取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) {
}
这是截图:
答案 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) {}