在包含地图的项目中,有时我们需要截屏用于分享什么的,不过常规的用于Activity界面的截屏并不能将地图一起截获,查看地图API才发现,原来地图有自己的用于截屏的接口。已高德地图为例:
1.Activity要继承OnMapScreenShotListener接口,实现回调方法:
/**
* 截屏回调方法
*/
@Override
public
void
onMapScreenShot(Bitmap bitmap) {
SimpleDateFormat sdf =
new
SimpleDateFormat(
"yyyyMMddHHmmss"
);
try
{
// 保存在SD卡根目录下,图片为png格式。
FileOutputStream fos =
new
FileOutputStream(
Environment.getExternalStorageDirectory() +
"/test_"
+ sdf.format(
new
Date()) +
".png"
);
boolean
b = bitmap.compress(CompressFormat.PNG,
100
, fos);
try
{
fos.flush();
}
catch
(IOException e) {
e.printStackTrace();
}
try
{
fos.close();
}
catch
(IOException e) {
e.printStackTrace();
}
if
(b)
ToastUtil.show(ScreenShotActivity.
this
,
"截屏成功"
);
else
{
ToastUtil.show(ScreenShotActivity.
this
,
"截屏失败"
);
}
}
catch
(FileNotFoundException e) {
e.printStackTrace();
}
2.在需要截屏的地方调用方法:aMap.getMapScreenShot(
this
);
3.需要注意的是:如果需要截的图地图只是其中一部分,则需要先将地图截屏,将截好的地图图片放到地图的上面(可是使用FrameLayout)布局,
然后再将需要的界面截图,这样所获得的截图中已经包含可视化地图。