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

背景:在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);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,572评论 0 17
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,148评论 1 32
  • 爱因斯坦在瑞士苏黎世联邦工业大学就读时,他的导师是数学家明可夫斯基。爱因斯坦肯动脑、爱思孝,深得明可夫斯基的...
    我爱更纱阅读 230评论 0 0
  • "In case I don't see you, good afternoon, good evening an...
    修住心阅读 353评论 0 0
  • 什么是RAC 简单说,它是一个第三方库,可以简化写代码的过程 官方说,他是一个有GitHub开源的应用于iOS和O...
    7dfa9c18c1d1阅读 908评论 0 2