美文网首页
布局文件转化为携带二维码的海报并分享

布局文件转化为携带二维码的海报并分享

作者: 古宇强 | 来源:发表于2019-06-27 20:50 被阅读0次

    背景:在webview加载的h5页面中点击直接生成图片并分享至微信,因为是直接生成,所以截屏分享并不合适,考虑到截屏截的图最初也是由布局文件绘制而来的,那么有没办法直接把布局文件转化为一个图片呢?还真有,代码注释很详细了

    final View view = LayoutInflater.from(WebViewActivity.this).inflate(R.layout.share_red_packet_layout, null);
    final int qrCodeSize = DisplayParseUtil.dp2px(SalesApplication.getContext(), 140);
    //动态设置view中子view的属性
    TextView nameTv = view.findViewById(R.id.name);
    nameTv.setText("哇哈哈");
    //分享出去的是携带有二维码的海报,调用zxing生成二维码
    ImageView qrCodeImage = view.findViewById(R.id.qrCode);
    qrCodeImage.setImageBitmap(QRCodeEncoder.syncEncodeQRCode(url, qrCodeSize, Color.parseColor("#000000"), null));
    //设置view的大小,注意对MeasureSpec的理解
    view.measure(View.MeasureSpec.makeMeasureSpec(mWebViewContainer.getWidth(), View.MeasureSpec.AT_MOST),
                            View.MeasureSpec.makeMeasureSpec(mWebViewContainer.getHeight(), View.MeasureSpec.AT_MOST));
     //设置布局的尺寸和位置
    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    //创建bitmap用于存储view信息,如果view中图片没有涉及到透明度,那么可以设置Bitmap.Config.RGB_565以节省内存
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(),
                            Bitmap.Config.ARGB_8888);
    //利用bitmap生成画布
     Canvas canvas = new Canvas(bitmap);
    //把view中的内容绘制在画布上,布局view也就保存到了bitmap上了,然后你就可以对bitmap为所欲为啦啦啦
     view.draw(canvas);
    

    相关文章

      网友评论

          本文标题:布局文件转化为携带二维码的海报并分享

          本文链接:https://www.haomeiwen.com/subject/cusdcctx.html