private void shotScreen() {
// 获取windows中最顶层的view
View view = getWindow().getDecorView();
view.buildDrawingCache();
// 获取状态栏高度
Rect rect = new Rect();
view.getWindowVisibleDisplayFrame(rect);
int statusBarHeights = rect.top;
Display display = getWindowManager().getDefaultDisplay();
// 获取屏幕宽和高
int widths = display.getWidth();
int heights = display.getHeight();
// 允许当前窗口保存缓存信息
view.setDrawingCacheEnabled(true);
// 去掉状态栏
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache(), 0,
statusBarHeights, widths, heights- statusBarHeights);
try {
FileOutputStream fos = new FileOutputStream("/sdcard/test.png");
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
view.destroyDrawingCache();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
其他布局
private void shotScreen() {
View v =getLayoutInflater().inflate(R.layout.main,null);
v.setDrawingCacheEnabled(true);
v.buildDrawingCache();
v.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
try {
Bitmap bitmap = v.getDrawingCache();
FileOutputStream fos = new FileOutputStream("/sdcard/test.png");
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}