带有地图的Activity在截屏时地图空白,原来必须使用地图自带的截屏。

本文介绍在地图项目中如何实现地图的截屏功能,包括地图的继承与回调方法的实现,以及如何将地图与Activity界面结合进行截图。通过实例演示了在高德地图中获取地图截图的方法,并提供了保存截图到SD卡的具体步骤。

在包含地图的项目中,有时我们需要截屏用于分享什么的,不过常规的用于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)布局,
  然后再将需要的界面截图,这样所获得的截图中已经包含可视化地图。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值