1、本文转自:http://www.cnblogs.com/pcstart/archive/2011/09/05/2167187.html
public
static
Bitmap getViewBitmap(View v) { 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(); Bitmap cacheBitmap
=
v.getDrawingCache();
if
(cacheBitmap
==
null
) {
//
Log.e(TAG, "failed getViewBitmap(" + v + ")", new
//
RuntimeException());
return
null
; } Bitmap bitmap
=
Bitmap.createBitmap(cacheBitmap);
//
Restore the view
v.destroyDrawingCache(); v.setWillNotCacheDrawing(willNotCache); v.setDrawingCacheBackgroundColor(color);
return
bitmap; }
//
保存到sdcard
//
savePic(getViewBitmap(v), "sdcard/xx.png");
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(); }
}
importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importandroid.app.Activity;importandroid.graphics.Bitmap;importandroid.graphics.Rect;importandroid.view.View;publicclassScreenShot {//获取指定Activity的截屏,保存到png文件privatestaticBitmap takeScreenShot(Activity activity){//View是你需要截图的ViewView view=activity.getWindow().getDecorView();
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
Bitmap b1=view.getDrawingCache();//获取状态栏高度Rect frame=newRect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);intstatusBarHeight=frame.top;
System.out.println(statusBarHeight);//获取屏幕长和高intwidth=activity.getWindowManager().getDefaultDisplay().getWidth();intheight=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();returnb;
}//保存到sdcardprivatestaticvoidsavePic(Bitmap b,String strFileName){
FileOutputStream fos=null;try{
fos=newFileOutputStream(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();
}
}//程序入口publicstaticvoidshoot(Activity a){
ScreenShot.savePic(ScreenShot.takeScreenShot(a),"sdcard/xx.png");
}
}
FilemyDir=newFile("/sdcard/saved_images");myDir.mkdirs();Randomgenerator=newRandom();intn=10000;n=generator.nextInt(n);Stringfname="Image-"+n+".jpg";Filefile=newFile(myDir,fname);if(file.exists())file.delete();try{FileOutputStreamout=newFileOutputStream(file);finalBitmap.compress(Bitmap.CompressFormat.JPEG,90,out);out.flush();out.close();}catch(Exceptione){e.printStackTrace();}