定义的View生成图片并且保存起来,参考网上的方法,并且做了修改,亲测有效
//保存自定义view的截图
private void saveCustomViewBitmap() {
//获取自定义view图片的大小
Bitmap temBitmap = Bitmap.createBitmap(mImageTouchView.getWidth(), mImageTouchView.getHeight(), Bitmap.Config.ARGB_8888)
//使用Canvas,调用自定义view控件的onDraw方法,绘制图片
Canvas canvas = new Canvas(temBitmap)
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG))
mImageTouchView.draw(canvas)
//输出到sd卡
File file = new File(Environment.getExternalStorageDirectory()+"/myshot.png")
try {
if (!file.exists()) {
file.createNewFile()
}
FileOutputStream foStream = new FileOutputStream(file)
temBitmap.compress(Bitmap.CompressFormat.PNG, 100, foStream)
foStream.flush()
foStream.close()
Log.i("aaa", "保存成功")
} catch (Exception e) {
Log.i("aaa", e.toString())
}
}
在View内部截屏生成图片
/**
* 截屏当前视图保存自定义view的截图
*/
public void saveCustomViewBitmap(){
Bitmap temBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(temBitmap);
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
draw(canvas);
File file = new File(Environment.getExternalStorageDirectory()+"/2.png" );
try {
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream foStream = new FileOutputStream(file);
temBitmap.compress(Bitmap.CompressFormat.PNG, 100, foStream);
foStream.flush();
foStream.close();
Log.i("aaa", "保存成功");
} catch (Exception e) {
Log.i("aaa", e.toString());
}
}