我有一个视图我想为该视图创建一个位图(后来我想要打印该位图)。我试过的内容如下
private Bitmap convertViewToBitMap() {
View v = rootView; //rootView is my view to be converted in bitmap
v.setDrawingCacheEnabled(true);
Bitmap b = v.getDrawingCache();
return b;
}
我的观点" rootview"是一个可扩展的列表,当我调用convertViewToBitMap()
时,我获得了在屏幕上可见的视图位图,但是如果视图被展开,则从屏幕出来的展开部分不会出现在位图中。那么有没有办法获得完整视图的位图,即使它在屏幕上是部分可见的?
答案 0 :(得分:0)
试试这个:
对视图进行一些调整。 "测量"方法定义视图的正确尺寸(将1000和600更改为最适合您的视图)
view.measure(MeasureSpec.makeMeasureSpec(1000, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(600, MeasureSpec.EXACTLY));
使用新测量值重新定义视图(同时更改0,0)
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
创建位图
Bitmap bm=Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);
之后,您可以将位图绘制到任何视图
Canvas cn=new Canvas(bm);
anyview.draw(cn);
此外,您可以将位图保存到文件
try {
FileOutputStream out = new FileOutputStream(file);
bm.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}