【发布时间】:2026-01-30 00:10:01
【问题描述】:
我有一个 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 时如何拍摄整个屏幕快照?
【问题讨论】:
-
AFAIK Google 使用 OpenGL 来渲染地图,并且无法抓取 OpenGL 视图的屏幕截图(GoogleMap 拍摄快照除外)。
标签: android android-activity snapshot mapfragment