我有一个Activity,它在屏幕的一半上包含一个MapFragment V2,而在另一半上有一些更多的视图,例如带有详细信息的TextViews。
现在,我想拍摄整个活动的快照,包括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,我如何拍摄整个屏幕快照?
答案 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);