/**
* 生成视图的预览
* @param activity 传context就好
* @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());
bitmap = Bitmap.createBitmap(bitmap, location[0]+18, location[1]+18, v.getWidth()-36, v.getHeight()-36);
FileOutputStream fout = new FileOutputStream(path);
bitmap.compress(Bitmap.CompressFormat.PNG, 50, fout);
return path;
} catch (FileNotFoundException e) {
e.printStackTrace();
Log.w("" ,"生成预览图片失败: "+e);
} catch (IllegalArgumentException e) {
Log.w("" ,"width is <= 0, or height is <= 0 "+e);
} finally {
// 清理缓存
view.destroyDrawingCache();
bitmap.recycle();
}
return null;
}