2015-07-05 70 views
0

我正在做屏幕截图并使用下一个方法返回位图。android截图整个布局

public Bitmap takeScreenShot(View view) { 
     view.setDrawingCacheEnabled(true); 
     view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); 
     view.buildDrawingCache(); 
     if (view.getDrawingCache() == null) return null; 
     Bitmap snapshot = Bitmap.createBitmap(view.getDrawingCache()); 
     view.setDrawingCacheEnabled(false); 
     view.destroyDrawingCache(); 
     return snapshot; 
    } 

,我把它称为像这样

takeScreenShot(getWindow().getDecorView().findViewById(android.R.id.content)) 

我的问题是,我有一些布局包含列表视图/ GridView的,我怎么能截图整个布局扩展?

回答

0

试试这个代码:

public static Bitmap getBitmapFromView(View v, int width, int height) { 
    Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);     
    Canvas c = new Canvas(b); 
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); 
    v.draw(c); 
    return b; 
} 

编辑:

Bitmap bitmap = Bitmap.createBitmap(scrollView.getChildAt(0).getWidth(), scrollView.getChildAt(0).getHeight(), Bitmap.Config.ARGB_8888); 
+0

宽度/高度应该给我什么样的价值观? – ask110593

+0

您调用view.getWidth()和view.getHeight以获取航班上的视图尺寸 – jlopez

+0

位图高度保持不变,尝试设置liniar布局视图(findViewById(R.id.root_view).getHeight())),然后gridview(findViewById(R.id.gridview).getHeight())),相同的高度:( – ask110593