将视图转换为位图

时间:2014-08-07 11:17:36

标签: android user-interface bitmap

我有一个视图我想为该视图创建一个位图(后来我想要打印该位图)。我试过的内容如下

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()时,我获得了在屏幕上可见的视图位图,但是如果视图被展开,则从屏幕出来的展开部分不会出现在位图中。那么有没有办法获得完整视图的位图,即使它在屏幕上是部分可见的?

1 个答案:

答案 0 :(得分:0)

试试这个:

  1. 对视图进行一些调整。 "测量"方法定义视图的正确尺寸(将1000和600更改为最适合您的视图)

    view.measure(MeasureSpec.makeMeasureSpec(1000, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(600, MeasureSpec.EXACTLY));
    
  2. 使用新测量值重新定义视图(同时更改0,0)

             view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    
  3. 创建位图

             Bitmap bm=Bitmap.createBitmap(view.getWidth(), view.getHeight(),Bitmap.Config.ARGB_8888);
    
  4. 之后,您可以将位图绘制到任何视图

                   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();
                    }