方式一:新建Bitmap,将View中内容绘制到Bitmap上
public static Bitmap createBitmapFromView(View view) {
//是ImageView直接获取
if (view instanceof ImageView) {
Drawable drawable = ((ImageView) view).getDrawable();
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable) drawable).getBitmap();
}
}
view.clearFocus();
Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
if (bitmap != null) {
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
canvas.setBitmap(null);
}
return bitmap;
}
方式二:直接从View缓存cache中取
/**
* 该方式原理主要是:View组件显示的内容可以通过cache机制保存为bitmap
*/
public static Bitmap createBitmapFromView(View view) {
Bitmap bitmap = null;
//开启view缓存bitmap
view.setDrawingCacheEnabled(true);
//设置view缓存Bitmap质量
view.setDrawingCacheQuality(DRAWING_CACHE_QUALITY_HIGH);
//获取缓存的bitmap
Bitmap cache = view.getDrawingCache();
if (cache != null && !cache.isRecycled()) {
bitmap = Bitmap.createBitmap(cache);
}
//销毁view缓存bitmap
view.destroyDrawingCache();
//关闭view缓存bitmap
view.setDrawingCacheEnabled(false);
return bitmap;
}