Android View生成图片
View保存成图片的主要思想
得到View的宽高
新建一个同样宽高的Bitmap对象.
新建一个Canvas,将Bitmap对象传进去.
使用View的draw方法将调用view.draw(canvas)方法.
最后就得到最终的Bitmap对象.
接下来可以将Bitmap对象保存到手机的储存上,或者设置给imageView.
要注意以下几点:
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方法转换成一张图片.