1、本文转自:http://www.cnblogs.com/pcstart/archive/2011/09/05/2167187.html
http://johnson008.blog.51cto.com/4000361/729440
v.clearFocus(); //
v.setPressed( false ); //
// 能画缓存就返回false
boolean willNotCache = v.willNotCacheDrawing();
v.setWillNotCacheDrawing( false );
int color = 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());
return null ;
}
Bitmapbitmap = Bitmap.createBitmap(cacheBitmap);
// Restoretheview
v.destroyDrawingCache();
v.setWillNotCacheDrawing(willNotCache);
v.setDrawingCacheBackgroundColor(color);
return bitmap;
}
// 保存到sdcard
// savePic(getViewBitmap(v),"sdcard/xx.png");
private static void savePic(Bitmapb,StringstrFileName){
FileOutputStreamfos = null ;
try {
fos = new FileOutputStream(strFileName);
if ( null != fos){
b.compress(Bitmap.CompressFormat.PNG, 90 ,fos);
fos.flush();
fos.close();
}
} catch (FileNotFoundExceptione){
e.printStackTrace();
} catch (IOExceptione){
e.printStackTrace();
}
}
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.Rect; import android.view.View; public class ScreenShot { // 获取指定Activity的截屏,保存到png文件 private static Bitmap takeScreenShot(Activity activity){ //View是你需要截图的View View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap b1 = view.getDrawingCache(); //获取状态栏高度 Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; System.out.println(statusBarHeight); //获取屏幕长和高 int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay().getHeight(); //去掉标题栏 //Bitmap b = Bitmap.createBitmap(b1, 0, 25, 320, 455); Bitmap b = Bitmap.createBitmap(b1, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return b; } //保存到sdcard private static void savePic(Bitmap b,String strFileName){ FileOutputStream fos = null; try { fos = new FileOutputStream(strFileName); if (null != fos) { b.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //程序入口 public static void shoot(Activity a){ ScreenShot.savePic(ScreenShot.takeScreenShot(a), "sdcard/xx.png"); } }
File myDir=new File("/sdcard/saved_images");
myDir.mkdirs();
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fname = "Image-"+ n +".jpg";
File file = new File (myDir, fname);
if (file.exists ()) file.delete ();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}