一、截取缓存图片(当前屏幕显示的部分):
从ImageView对象中获取图像的方法,就是ImageView类中的getDrawingCache()方法,比如下面的代码就是从一个ImageView对象iv_photo中获取图像:
Bitmap obmp = Bitmap.createBitmap(iv_photo.getDrawingCache());
但是需要说明的是:
1.
2.
二、截取webView的整个网页:
android.graphics.Picture pic = wView.capturePicture();
int width = pic.getWidth();
int height = pic.getHeight();
Bitmap bmp = Bitmap.createBitmap(width, 200, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);
pic.draw(canvas);
imageView.getBackground(),是获取它的背景图片;
在调用getDrawingCache的时候要注意下面2点:
- 在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:
imageview.setDrawingCacheEnabled(true);
否则,无法从ImageView对象iv_photo中获取图像; - 在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:
imageview.setDrawingCacheEnabled(false);
以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。
1. private Bitmap shot(Activity activity) {
2. //View是你需要截图的View
3. View view = activity.getWindow().getDecorView();
4. true);
5. view.buildDrawingCache();
6. Bitmap b1 = view.getDrawingCache();
7. // 获取状态栏高度 /
8. new Rect();
9. activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
10. int statusBarHeight = frame.top;
11. "TAG", "" + statusBarHeight);
12. // 获取屏幕长和高
13. int width = activity.getWindowManager().getDefaultDisplay().getWidth();
14. int height = activity.getWindowManager().getDefaultDisplay().getHeight();
15. // 去掉标题栏
16. 0, 25, 320, 455);
17. 0, statusBarHeight, width, height - statusBarHeight);
18. view.destroyDrawingCache();
19. return b;
20. }