Android L, вам нужно вызвать WebView.enableSlowWholeDocumentDraw() перед созданием WebViews. То есть, если у вас есть какие-либо WebViews в вашем макете, убедитесь, что вы вызываете этот метод до вызова setContentView() в вашей onCreate().
связаны Mikhail Naganov: https://stackoverflow.com/a/30084485/703225
@Override
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
WebView.enableSlowWholeDocumentDraw();
}
...
setContentView(layout);
...
...
}
затем:
/**
* WevView screenshot
*
* @param webView
* @return
*/
public static Bitmap screenshot(WebView webView, float scale11) {
try {
float scale = webView.getScale();
int height = (int) (webView.getContentHeight() * scale + 0.5);
Bitmap bitmap = Bitmap.createBitmap(webView.getWidth(), height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
webView.draw(canvas);
return bitmap;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
, если вы не используете webView.getScale(), а также:
public static Bitmap screenshot2(WebView webView) {
webView.measure(MeasureSpec.makeMeasureSpec(
MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(), webView.getMeasuredHeight());
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache();
Bitmap bitmap = Bitmap.createBitmap(webView.getMeasuredWidth(),
webView.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
int iHeight = bitmap.getHeight();
canvas.drawBitmap(bitmap, 0, iHeight, paint);
webView.draw(canvas);
return bitmap;
}
Привет, спасибо за помощь ур. когда я отлаживаю, 'webView.draw (canvas);' эта линия занимает 3 секунды. Нет ли способа использовать эту строку? Когда я удаляю эту строку, я получаю пустую страницу. – Adrian
Извините, я понятия не имею. :-(Страница слишком большая? – qinmiao
haha yep. Довольно большой. Может быть, это и есть причина .. – Adrian