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