[转]Android 屏幕截图 代码

本文转自: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();
        }
    }
原文地址:https://www.cnblogs.com/freeliver54/p/2171433.html