Android工具類——當前屏幕截圖

注意:SurfaceView內的影像是不能截圖的;截圖之後是純黑的,什麼內容都沒有。

public class PhotoUtil {


    public static void activityShot(Activity activity) {
        View view = activity.getWindow().getDecorView();

        //允許當前窗口保存緩存信息
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();

        //獲取狀態欄高度
        Rect rect = new Rect();
        view.getWindowVisibleDisplayFrame(rect);
        int statusBarHeight = rect.top;

        WindowManager windowManager = activity.getWindowManager();

        //獲取屏幕寬和高
        DisplayMetrics outMetrics = new DisplayMetrics();
        windowManager.getDefaultDisplay().getMetrics(outMetrics);
        int width = outMetrics.widthPixels;
        int height = outMetrics.heightPixels;

        //去掉狀態欄
        Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarHeight, width,
                height - statusBarHeight);

        //銷燬緩存信息
        view.destroyDrawingCache();
        view.setDrawingCacheEnabled(false);

        saveBitmapToLocal("FacePic",bitmap);
    }


    public static void saveBitmapToLocal(String fileName, Bitmap bitmap) {

        try {
            String FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/jjaj/photos";

            File file = new File(FILE_PATH, fileName + ".png");
            // file其實是圖片,它的父級File是文件夾,判斷一下文件夾是否存在,如果不存在,創建文件夾
            File fileParent = file.getParentFile();
            if (!fileParent.exists()) { // 文件夾不存在
                fileParent.mkdirs();// 創建文件夾
            } // 將圖片保存到本地
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(file));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章