一、截取缓存图片(当前屏幕显示的部分):
从ImageView对象中获取图像的方法,就是ImageView类中的getDrawingCache()方法,比如下面的代码就是从一个ImageView对象iv_photo中获取图像:
Bitmap obmp = Bitmap.createBitmap(iv_photo.getDrawingCache());
但是需要说明的是:
1.
2.
二、截取webView的整个网页:
android.graphics.Picture pic = wView.capturePicture();
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中获取的图像,还是原来的图像。
-
-
-
-
-
-
- private Bitmap shot(Activity activity) {
- //View是你需要截图的View
- View view = activity.getWindow().getDecorView();
- view.setDrawingCacheEnabled(true);
- view.buildDrawingCache();
- Bitmap b1 = view.getDrawingCache();
- // 获取状态栏高度 /
- Rect frame = new Rect();
- activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
- int statusBarHeight = frame.top;
- Log.i("TAG", "" + statusBarHeight);
- // 获取屏幕长和高
- int width = activity.getWindowManager().getDefaultDisplay().getWidth();
- int height = activity.getWindowManager().getDefaultDisplay().getHeight();
- // 去掉标题栏
- Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455);
- Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight);
- view.destroyDrawingCache();
- return b;
- }