【发布时间】:2016-04-26 19:38:02
【问题描述】:
Google Maps API 的 v2 公开了一个 snapshot 方法,用于获取出现在我们 UI 中的 GoogleMap 对象的位图表示。
此方法绝对是必需的:例如,如果我尝试手动创建整个应用程序 UI 的位图表示,如下所示:
View view = activity.getWindow().getDecorView().getRootView();
Bitmap bitmap = Bitmap.createBitmap(
view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
地图没有被捕获(bitmap中对应的像素都是黑色的)。
但是,如果我在 Activity 布局中包含 MapView,然后在运行时使用 Stetho 检查视图层次结构,则似乎至少有一部分 MapView(可能是叠加层)是使用渲染的“常规”Views 的内部层次结构,例如 RelativeLayout、LinearLayout、ImageView 等:
我的问题是:MapView 有什么不同?为什么绘制到Canvas 根本无法捕获地图的任何部分(甚至用于渲染部分地图的“常规”视图也没有)?
作为参考,我上面给出的实现可以成功捕获SurfaceView 内容,以及所有其他“常规”视图。
【问题讨论】:
标签: android google-maps-android-api-2 android-view android-mapview