前言
之前的文章已經(jīng)講了X5內(nèi)核加入到項目中的方式烁兰,現(xiàn)在寫一下如何在該內(nèi)核下使用長截圖决瞳,Android自帶的webView也適用改方式认境。
都是輪子聘萨,我直接上代碼了,以下是webView的長截圖
private Bitmap captureScreenforRecord(){
webView.measure(View.MeasureSpec.makeMeasureSpec(
View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
webView.layout(0, 0, webView.getMeasuredWidth(),
webView.getMeasuredHeight());
webView.setDrawingCacheEnabled(true);
webView.buildDrawingCache();
Bitmap bm = Bitmap.createBitmap(webView.getMeasuredWidth(),
webView.getMeasuredHeight(), Bitmap.Config.RGB_565);
Canvas bigcanvas = new Canvas(bm);
Paint paint = new Paint();
int iHeight = bm.getHeight();
bigcanvas.drawBitmap(bm, 0, iHeight, paint);
webView.draw(bigcanvas);
return bm;
}
瀏覽器截圖
點(diǎn)擊screen按鈕后跳轉(zhuǎn)至pictureActivity
正常的webView還有一種截圖的方式彬坏,
float scale = webView.getScale();
int webViewHeight = (int) (webView.getContentHeight()*scale);
Bitmap bitmap = Bitmap.createBitmap(webView.getWidth(),webViewHeight, Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
webView.draw(canvas);
但是在X5 內(nèi)核的webView不可用朦促,會出現(xiàn)屏幕外為黑屏。在Android5.0以后的webView也可能出現(xiàn)黑色栓始,如下
需要進(jìn)行一些處理:
static {//webView長截圖分享在api21以上需要處理
if(Build.VERSION.SDK_INT >= 21){
WebView.enableSlowWholeDocumentDraw();
}
}
不過在X5內(nèi)核下以上方法時被屏蔽的务冕,所以不推薦使用,可以在原生的webView中使用幻赚,內(nèi)存消耗會變大禀忆。
另外附上ScrollView長截圖代碼
float scale = webView.getScale();
int webViewHeight = (int) (webView.getContentHeight()*scale);
Bitmap bitmap = Bitmap.createBitmap(webView.getWidth(),webViewHeight, Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(bitmap);
webView.draw(canvas);
鏈接附上 github
CaptureScreenWithTencentX5