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