x5内核获取长截图功能:
private WebView webview;
public void getLongCapture() {
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 longImage = Bitmap.createBitmap(webview.getMeasuredWidth(),
webview.getMeasuredHeight() , Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(longImage); // 画布的宽高和 WebView 的网页保持一致
Canvas longCanvas = new Canvas(longImage); // 画布的宽高和 WebView 的网页保持一致
Paint paint = new Paint();
canvas.drawBitmap(longImage, 0, webview.getMeasuredHeight(), paint);
float scale = getResources().getDisplayMetrics().density;
Bitmap x5Bitmap = Bitmap.createBitmap(webview.getWidth(), webview.getHeight(), Bitmap.Config.ARGB_8888);
Canvas x5Canvas = new Canvas(x5Bitmap);
x5Canvas.drawColor(ContextCompat.getColor(getContext(), R.color.transparent));
webview.getX5WebViewExtension().snapshotWholePage(x5Canvas, false, false); // 少了这行代码就无法正常生成长图
Matrix matrix = new Matrix();
matrix.setScale(scale, scale);
longCanvas.drawBitmap(x5Bitmap, matrix, paint);
if (longImage != null) {
PhotoAssist.saveBitmap(longImage);
ToastUtil.showLong("保存成功");
} else {
ToastUtil.showLong("保存失败");
}
}
class MyHandler extends Handler {
WeakReference<FitBleKitWebviewFragment> mActivityReference;
MyHandler(FitBleKitWebviewFragment fragment) {
mActivityReference= new WeakReference(fragment);
}
@Override
public void handleMessage(Message msg) {
final FitBleKitWebviewFragment fragment = mActivityReference.get();
if (fragment != null) {
if (msg.what == MSG_CAPTURE){
fragment.getLongCapture();
}
}
}
}
x5内核获取长截图功能:
private WebView webview;
public void getLongCapture() {
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 longImage = Bitmap.createBitmap(webview.getMeasuredWidth(),
webview.getMeasuredHeight() , Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(longImage); // 画布的宽高和 WebView 的网页保持一致
Canvas longCanvas = new Canvas(longImage); // 画布的宽高和 WebView 的网页保持一致
Paint paint = new Paint();
canvas.drawBitmap(longImage, 0, webview.getMeasuredHeight(), paint);
float scale = getResources().getDisplayMetrics().density;
Bitmap x5Bitmap = Bitmap.createBitmap(webview.getWidth(), webview.getHeight(), Bitmap.Config.ARGB_8888);
Canvas x5Canvas = new Canvas(x5Bitmap);
x5Canvas.drawColor(ContextCompat.getColor(getContext(), R.color.transparent));
webview.getX5WebViewExtension().snapshotWholePage(x5Canvas, false, false); // 少了这行代码就无法正常生成长图
Matrix matrix = new Matrix();
matrix.setScale(scale, scale);
longCanvas.drawBitmap(x5Bitmap, matrix, paint);
if (longImage != null) {
PhotoAssist.saveBitmap(longImage);
ToastUtil.showLong("保存成功");
} else {
ToastUtil.showLong("保存失败");
}
}
class MyHandler extends Handler {
WeakReference<FitBleKitWebviewFragment> mActivityReference;
MyHandler(FitBleKitWebviewFragment fragment) {
mActivityReference= new WeakReference(fragment);
}
@Override
public void handleMessage(Message msg) {
final FitBleKitWebviewFragment fragment = mActivityReference.get();
if (fragment != null) {
if (msg.what == MSG_CAPTURE){
fragment.getLongCapture();
}
}
}
}