Android 将View保存为图片 View生成长图
2017-11-23 12:54 阅读(271)


Android View生成图片

View保存成图片的主要思想

  • 得到View的宽高

  • 新建一个同样宽高的Bitmap对象.

  • 新建一个Canvas,将Bitmap对象传进去.

  • 使用View的draw方法将调用view.draw(canvas)方法.

  • 最后就得到最终的Bitmap对象.

接下来可以将Bitmap对象保存到手机的储存上,或者设置给imageView.

这里应该有代码,有时间了补上demo1

要注意以下几点:

  • View一定是在绘制完成后才能获得宽高.

  • View在activity里面创建的时候是在OnResume方法之后的300毫秒才可见的.这个时候才有View的宽高.也就是view.getWidth() 和 View.getHeight() 这两个方法才能用.

  • Bitmap对象创建的过程中,如果图像的压缩比率不高,图片过大会引起OOM .使用ARGB_4444 压缩格式能有效降低图片大小.

如何做到在View不被用户感知的情况下填充内容并生成图片

这个问题可以用高度只有1像素的ScrollView来解决.

解决思路 : 在Activity中,在用户不轻易察觉的地方,比如 ToolBar下面的细小margin区域设置一个包含一个ScrollView, 里面包含了我们要生成的图片的布局.这样就能用上面的View保存成Bitmap对象进而生成图片的方法,把整个ScrollView通过View的draw方法转换成一张图片.


作者:

Panda槐树向北