需求: webView 加载的超长页面,要求点击将整个页面分享至微信、朋友圈。
思考:
1.系统截屏,只能截取屏幕大小,不满足要求。
2.将View保存为图片
⑴普通View
private Bitmap loadBitmapFromView(View v) {
int w = v.getWidth();
int h = v.getHeight();
Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(bmp);
c.drawColor(Color.WHITE); /** 如果不设置canvas画布为白色,则生成透明 */
v.layout(0, 0, w, h);
v.draw(c);
return bmp;
}
⑵WebView
private static Bitmap captureWebView(WebView webView) {
Picture snapShot = webView.capturePicture();
Bitmap bitmap = Bitmap.createBitmap(snapShot.getWidth(),
snapShot.getHeight(), Bitmap.Config.ARGB_4444);
Canvas canvas = new Canvas(bitmap);
snapShot.draw(canvas);
return bitmap;
}
使用WebView提供的方法计算长度,5.0以上可能会显示保存不全,5.0以上进行了优化先渲染一部分,滚动再渲染导致,
解决方案 Activity setContent()之前设置渲染整个页面
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
WebView.enableSlowWholeDocumentDraw();
}
分享的时候可能由于页面太长压缩图片模糊,不压缩分享SDK限制分享不了,使用原生分享可解决问题。
本文介绍了一种解决WebView加载的超长页面截图并分享至微信等平台的方法。包括普通View截图、WebView特殊处理及兼容性问题解决方案。
2311

被折叠的 条评论
为什么被折叠?



