我需要以拇指的方式从网络视图中截取屏幕截图,但是当我使用View.draw(Canvas)时,我只能从网站的左上角获取图形,而不是我当前正在查看的部分(网络视图所显示的内容) ,而且看不见的部分是空白的(我知道它是由enableSlowWholeDocumentDraw引起的,无论如何我都不需要这些区域)
以下是相关代码(在类中扩展了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;
}
答案 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;
}