您的位置:首页 > 移动开发 > Android开发

Android: 屏幕截图

2015-06-12 15:26 429 查看
获取图片:

/**
* 屏幕截屏
* @param activity
* @return
*/
public static Bitmap getShot(Activity activity) {
// 获取windows中最顶层的view
View view = activity.getWindow().getDecorView();
view.buildDrawingCache();

// 获取状态栏高度
Rect rect = new Rect();
view.getWindowVisibleDisplayFrame(rect);
int statusBarHeights = rect.top;
Display display = activity.getWindowManager().getDefaultDisplay();

// 获取屏幕宽和高
int widths = display.getWidth();
int heights = display.getHeight();

// 允许当前窗口保存缓存信息
view.setDrawingCacheEnabled(true);

// 去掉状态栏
Bitmap bmp = Bitmap.createBitmap(view.getDrawingCache(), 0,
statusBarHeights, widths, heights - statusBarHeights);

// 销毁缓存信息
view.destroyDrawingCache();

return bmp;
}


保存图片:

public static void saveImage(Bitmap bmp, String dirName, String fileName) throws IOException {
// 判断sd卡是否存在
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
String storagePath = Environment.getExternalStorageDirectory().toString();
File dir = new File(storagePath, dirName);
// 判断文件夹是否存在,不存在则创建
if(!dir.exists()){
dir.mkdir();
}

File file = new File(dir.getPath(), fileName);
// 判断文件是否存在,不存在则创建
if (!file.exists()) {
file.createNewFile();
}

FileOutputStream fos = null;
try {
fos = new FileOutputStream(file);
if (fos != null) {
// 第一参数是图片格式,第二个是图片质量,第三个是输出流
bmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
// 用完关闭
fos.flush();
fos.close();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}


参考:/article/3562644.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: