截取当前界面的组件和保存成png图像文件。
首先要调用View.setDrawingCacheEnabled方法打开图像缓存,然后使用view.getDrawingCache方法获取View的Bitmap对象。
保存成png图像使用Bitmap.compress方法即可。
具体代码如下:
View view = getLayoutInflater().inflate(R.layout.activity_main,null);
//打开图像缓存
view.setDrawingCacheEnabled(true);
//只有调用measure和layout方法才能成功保存可视组件的截图到png图像文件
//测量view的大小
view.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
//发送位置和尺寸到View及其所有的子view
view.layout(0, 0, view.getMeasuredHeight(), view.getMeasuredWidth());
try{
//获取可是组件的截图
Bitmap bitmap = view.getDrawingCache();
// 将截图保存到SD卡根目录的MyText.png图像文件中
FileOutputStream fileos = new FileOutputStream("/sdcard/MyTest.png");
//将Bitmap对象中的图像数据压缩成png格式的图像数据,并将这些数据保存在MyTest.png文件中
bitmap.compress(CompressFormat.PNG, 100, fileos);
//关闭文件输出流
fileos.close();
}catch(Exception e){
System.out.println("出错了!!!!!!");
}
对了,若保存图像到sdcard上别忘了取得权限:
<!-- 往SDCard的创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
具体效果如下:
、
上图中MyTest.png即保存的截图。