说到android的屏幕截图,一般都会用到getDrawingCache()获取视图缓存来实现.
1.本人当初为了方便想到了使用activity的window中的最顶层DecorView
的ceche进行屏幕截图
View decorView = activity.getWindow().getDecorView();
decorView.setDrawingCacheEnabled(true);
Bitmap bmp = decorView.getDrawingCache();
Rect rect = new Rect();
decorView.getWindowVisibleDisplayFrame(rect);
int statusBarHeight = rect.top;
int width = bmp.getWidth();
int height = bmp.getHeight();
Bitmap saveBmp = Bitmap.createBitmap(bmp, 0, statusBarHeight,
width, height - statusBarHeight, null, false);
后来发现上述代码所实现的方式,会在view控件过多的页面,cache出现内容缺失不完整。
2.修正方案是直接获取DecorView以下的最顶层布局view的cache。
view.destroyDrawingCache();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap mBitmap = view.getDrawingCache();