/**
* 生成视图的预览
* @param activity
* @param v
* @return 视图生成失败返回null
* 视图生成成功返回视图的绝对路径
*/
public static String saveImage(Activity activity, View v) {
Bitmap bitmap;
String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "preview.png";
View view = activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
bitmap = view.getDrawingCache();
Rect frame = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int[] location = new int[2];
v.getLocationOnScreen(location);
try {
bitmap = Bitmap.createBitmap(bitmap, location[0], location[1], v.getWidth(), v.getHeight());
FileOutputStream fout = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fout);
return path;
} catch (FileNotFoundException e) {
e.printStackTrace();
Logger.e(TAG, "生成预览图片失败:" + e);
} catch (IllegalArgumentException e) {
Logger.e(TAG, "width is <= 0, or height is <= 0");
} finally {
// 清理缓存
view.destroyDrawingCache();
}
return null;
}
网友评论