两种获取view的bitmap的方法
在开发中有时候需要获取到一个view当前的图像信息,这个view可能是一个单一的view,也可能是多个view组成的ViewGroup,所以不能通过简单的getBackground的方法获取到这个图像信息。下面提供两个比较方便方法可以获取这个信息
- 通过canvas获取
/**
* 通过canvas复制view的bitmap
*/
private void copyByCanvas() {
int width = mOriginImageView.getWidth();
int height = mOriginImageView.getHeight();
Bitmap bp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bp);
mOriginImageView.draw(canvas);
canvas.save();
mCopyImageView1.setBackground(new BitmapDrawable(bp));
}
- 通过drawingCache获取
/**
* 通过drawingCache获取bitmap
*/
private void copyByDrawingCache() {
mOriginImageView.setDrawingCacheEnabled(true);
mOriginImageView.buildDrawingCache(true);
final Bitmap bp = mOriginImageView.getDrawingCache();
if(bp != null){
Bitmap finalBp = Bitmap.createBitmap(bp);
mOriginImageView.setDrawingCacheEnabled(false);
mCopyImageView2.setBackground(new BitmapDrawable(finalBp));
}
}