Android 拍摄webview安卓5.0+;
我有一个代码来拍摄WebView的快照,它在pre-L版本上运行得非常好:Android 拍摄webview安卓5.0+;,android,webview,android-5.0-lollipop,snapshot,Android,Webview,Android 5.0 Lollipop,Snapshot,我有一个代码来拍摄WebView的快照,它在pre-L版本上运行得非常好: DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); float changeSizeCoefficient = calculateChangeCoef(displayMetrics); int sizeTo = (int) (238f * displayMetrics.density * changeSiz
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float changeSizeCoefficient = calculateChangeCoef(displayMetrics);
int sizeTo = (int) (238f * displayMetrics.density * changeSizeCoefficient);
int height = webView.getWidth() > webView.getContentHeight() ? webView.getContentHeight() : webView.getWidth();
Bitmap snapshot = Bitmap.createBitmap(webView.getWidth(), height, Bitmap.Config.ARGB_8888);
Canvas bitmapCanvas = new Canvas(snapshot);
webView.draw(bitmapCanvas);
Bitmap resizedSnapshot = Bitmap.createScaledBitmap(snapshot, sizeTo, sizeTo, false);
if (!resizedSnapshot.equals(snapshot))
snapshot.recycle();
return resizedSnapshot;
但在5.0+版本中,快照上WebView的不可见部分用白色填充
如何在Android 5.0+上拍摄所有WebView的快照?此拍摄
WebView的快照的实现将在任何Android设备上运行,
->将WebView
放入FrameLayout
<FrameLayout
android:id="@+id/fl_web_webview_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<WebView
android:id="@+id/wv_webview_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</FrameLayout>
然后将此方法放入活动
类中
public static Bitmap loadBitmapFromView(View v, int width, int height) {
Bitmap b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}
现在调用上述方法以获取您的WebView的位图数据
Bitmap b = loadBitmapFromView(fl_web_webview_activity, fl_web_webview_activity.getWidth(), fl_web_webview_activity.getHeight());
如果您使用mWebView
而不是fl\u web\u webview\u activity
在以下Android 5.0
中工作正常,但在Android 5.0
或更高版本中返回黑白位图
这个实现在低于Android 5.0
和高于Android 5.0
的所有设备上都能完美运行
希望这个实现能帮助别人
谢谢,请看@Mikhail Naganov,thx,为我工作。@Ufkoku你能把你的calculateChangeCoef代码写出来,这样它就可以帮助其他人解决这个问题吗?@NovusMobile我2年多前问过这个问题,现在我无法访问这个代码。我想您可以使用上面Mikhail Naganov建议的答案,或者下面sahulab.Thx建议的答案作为答案,但建议的代码只拍摄WebView可见部分的快照。我的代码拍摄webview内容的快照,这超出了屏幕范围。在我的问题下,评论中链接的答案在我的情况下更好@但我在Android 4.4,4.4.4,5.0,4.0中测试了整个网络视图的快照,所以我可以知道你的移动操作系统的详细信息吗?
Bitmap b = loadBitmapFromView(fl_web_webview_activity, fl_web_webview_activity.getWidth(), fl_web_webview_activity.getHeight());