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();
        }
    }

}

猜你喜欢

转载自blog.csdn.net/qq_30297763/article/details/99417004