Android Webview屏幕快照当前查看部分

时间:2019-06-21 07:39:41

标签: android android-webview

我需要以拇指的方式从网络视图中截取屏幕截图,但是当我使用View.draw(Canvas)时,我只能从网站的左上角获取图形,而不是我当前正在查看的部分(网络视图所显示的内容) ,而且看不见的部分是空白的(我知道它是由enableSlowWholeDocumentDraw引起的,无论如何我都不需要这些区域) enter image description here

以下是相关代码(在类中扩展了WebView):

public Bitmap Screenshot() {
    try {
        Bitmap bitmap = Bitmap.createBitmap(getMeasuredWidth(),getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        this.draw(canvas);
        return bitmap;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

1 个答案:

答案 0 :(得分:1)

nvm,我知道了/ s

结果证明Canvas可以设置Matrix来移动“绘图部分”,所以我可以使用setTranslate(dx,dy)来匹配“查看部分”

更新的代码:

public Bitmap Screenshot() {
    try {
        Bitmap bitmap = Bitmap.createBitmap(getMeasuredWidth(),getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        Matrix drawMatrix = new Matrix();
        drawMatrix.setTranslate(-getScrollX(),-getScrollY());
        canvas.setMatrix(drawMatrix);
        this.draw(canvas);
        return bitmap;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}