Android webview截图当前查看部分
Android webview screenshot current viewing part
我需要从 webview 截屏作为拇指,但是当我使用 View.draw(Canvas) I only get the drawing from the top left of the website, not my currently viewing part (what the webview is showing), and also the part out of sight is blank (I know it is caused by enableSlowWholeDocumentDraw 并且我不需要那些区域时)
以下是相关代码(在 class extends 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;
}
nvm,我想通了 /s
原来 Canvas 可以设置 Matrix 来移动 "drawing part",所以我可以使用 setTranslate(dx,dy) 来匹配 "viewing part"
更新代码:
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;
}
我需要从 webview 截屏作为拇指,但是当我使用 View.draw(Canvas) I only get the drawing from the top left of the website, not my currently viewing part (what the webview is showing), and also the part out of sight is blank (I know it is caused by enableSlowWholeDocumentDraw 并且我不需要那些区域时)
以下是相关代码(在 class extends 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;
}
nvm,我想通了 /s
原来 Canvas 可以设置 Matrix 来移动 "drawing part",所以我可以使用 setTranslate(dx,dy) 来匹配 "viewing part"
更新代码:
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;
}