MapFragment快照的活动

时间:2015-07-25 18:35:44

标签: android android-activity snapshot mapfragment

我有一个Activity,它在屏幕的一半上包含一个MapFragment V2,而在另一半上有一些更多的视图,例如带有详细信息的TextViews。

这是屏幕的样子: enter image description here

现在,我想拍摄整个活动的快照,包括MapFragment,但是当我尝试这样做时,我确实得到了一张图片,但地图部分是空白的(全黑)!

This is我用来截取屏幕截图的代码非常棒!

我知道有关获取MapFragment快照的选项,但它只占用了没有屏幕其余部分的地图区域。 像这样:

GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {

            @Override
            public void onSnapshotReady(Bitmap snapshot) {
                // TODO Auto-generated method stub
                FileOutputStream out = null;
                boolean status = true;
                try {
                    out = new FileOutputStream(sharedImage);
                    snapshot = Bitmap.createScaledBitmap(snapshot, findViewById(R.id.trip_map).getWidth(),
                            findViewById(R.id.trip_map).getHeight(), true);
                    status = snapshot.compress(Bitmap.CompressFormat.JPEG, 100, out);
                    Toast.makeText(TripDetailsActivity.this, "save status: " + status, Toast.LENGTH_SHORT).show();
                    snapshot.recycle();
                    snapshot = null;
                    System.gc();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    try {
                        out.flush();
                        out.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                }
                openShareImageDialog(sharedImage);
            }
        };
        mMap.snapshot(callback);

    }
    return true;
}

有没有人知道如果有MapFragment,我如何拍摄整个屏幕快照?

2 个答案:

答案 0 :(得分:0)

在我的情况下试试这个为我工作,我知道两者都相同,但尝试使用LinearLayout作为父级,将所有元素保存在一个父级布局中,并在需要时进行屏幕截图:

{{1}}

答案 1 :(得分:0)

您可以使用谷歌地图回调功能:

GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {
            @Override
            public void onSnapshotReady(Bitmap snapshot) {
                // create bitmap screen capture
                Bitmap bitmap = snapshot;

                OutputStream fout = null;
                File imageFile = new File(filePath);

                try {
                    fout = new FileOutputStream(imageFile);
                    bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
                    fout.flush();
                    fout.close();

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        };

现在使用您的Google地图片段致电:

map.snapshot(callback);