关于使用getDrawingCache()方法获取屏幕截图的问题

说到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();




你可能感兴趣的:(Android应用)