X5 内核 webview 长截图 源码

 
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();
                }
            }
        }
    }

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值