publicstaticBitmapgetViewBitmap(Viewv){
v.clearFocus();//
v.setPressed(false);//
//能画缓存就返回false
booleanwillNotCache=v.willNotCacheDrawing();
v.setWillNotCacheDrawing(false);
intcolor=v.getDrawingCacheBackgroundColor();
v.setDrawingCacheBackgroundColor(0);
if(color!=0){
v.destroyDrawingCache();
}
v.buildDrawingCache();
BitmapcacheBitmap=v.getDrawingCache();
if(cacheBitmap==null){
//Log.e(TAG,"failedgetViewBitmap("+v+")",new
//RuntimeException());
returnnull;
}
Bitmapbitmap=Bitmap.createBitmap(cacheBitmap);
//Restoretheview
v.destroyDrawingCache();
v.setWillNotCacheDrawing(willNotCache);
v.setDrawingCacheBackgroundColor(color);
returnbitmap;
}
//保存到sdcard
//savePic(getViewBitmap(v),"sdcard/xx.png");
privatestaticvoidsavePic(Bitmapb,StringstrFileName){
FileOutputStreamfos=null;
try{
fos=newFileOutputStream(strFileName);
if(null!=fos){
b.compress(Bitmap.CompressFormat.PNG,90,fos);
fos.flush();
fos.close();
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
v.clearFocus();//
v.setPressed(false);//
//能画缓存就返回false
booleanwillNotCache=v.willNotCacheDrawing();
v.setWillNotCacheDrawing(false);
intcolor=v.getDrawingCacheBackgroundColor();
v.setDrawingCacheBackgroundColor(0);
if(color!=0){
v.destroyDrawingCache();
}
v.buildDrawingCache();
BitmapcacheBitmap=v.getDrawingCache();
if(cacheBitmap==null){
//Log.e(TAG,"failedgetViewBitmap("+v+")",new
//RuntimeException());
returnnull;
}
Bitmapbitmap=Bitmap.createBitmap(cacheBitmap);
//Restoretheview
v.destroyDrawingCache();
v.setWillNotCacheDrawing(willNotCache);
v.setDrawingCacheBackgroundColor(color);
returnbitmap;
}
//保存到sdcard
//savePic(getViewBitmap(v),"sdcard/xx.png");
privatestaticvoidsavePic(Bitmapb,StringstrFileName){
FileOutputStreamfos=null;
try{
fos=newFileOutputStream(strFileName);
if(null!=fos){
b.compress(Bitmap.CompressFormat.PNG,90,fos);
fos.flush();
fos.close();
}
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
本文介绍如何从Android应用中获取指定View视图并将其转化为位图,然后将该位图保存到SD卡上。通过调用View的getDrawingCache方法,可以创建视图的缓存位图副本,进而实现视图内容的快速保存。
1万+

被折叠的 条评论
为什么被折叠?



