Android 屏幕截图 代码

时间:2022-11-11 15:25:19
    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();
}
}