//获取当前屏幕的大小
int width = getWindow().getDecorView().getRootView().getWidth();
int height = getWindow().getDecorView().getRootView().getHeight();
//生成相同大小的图片(用来存储截屏后生成的bitmap对象)
Bitmap temBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
//找到当前页面的根布局(需要截屏的View)
View view = qrCodeLL;
//设置缓存
view.setDrawingCacheEnabled(true);
view.buildDrawingCache();
//从缓存中获取当前屏幕的图片
temBitmap = view.getDrawingCache().copy(Bitmap.Config.ARGB_8888, false);
//将截屏图片保存至本地
saveToLocal(temBitmap);
//销毁当前屏幕图片的缓存
view.destroyDrawingCache();
view.setDrawingCacheEnabled(false);
/**
* 保存截屏至本地
*
* @param bitmap
*/
public void saveToLocal(Bitmap bitmap) {
//生成路径
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
String dirName = "screen";
File appDir = new File(root, dirName);
if (!appDir.exists()) {
appDir.mkdirs();
}
//文件名为时间
long timeStamp = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
String sd = sdf.format(new Date(timeStamp));
String fileName = sd + ".jpg";
//获取文件
File file = new File(appDir, fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
//通知系统相册刷新
InviteQRCodeActivity.this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
Uri.fromFile(new File(file.getPath()))));
Toast.makeText(InviteQRCodeActivity.this, getString(R.string.pic_to_local), Toast.LENGTH_SHORT).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fos != null) {
fos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}