其他分享
首页 > 其他分享> > android-将MapView另存为位图

android-将MapView另存为位图

作者:互联网

我已经尝试了两种方法将MapView另存为位图,但在我看来似乎没有任何效果.第一种选择

Bitmap bitMap = mMapView.getDrawingCache();             
mMapView.setDrawingCacheEnabled(true);
bitMap = mMapView.getDrawingCache(true);

第二,

Canvas offscreencanvas = new Canvas();
Bitmap bmap = Bitmap.createBitmap(mMapView.getWidth(), mMapView.getHeight(),
                    Bitmap.Config.ARGB_8888);
bmap.copy(Config.ARGB_4444, true);
offscreencanvas.setBitmap(bmap);
offscreencanvas.drawBitmap(bmap, 0, 0, null);

两者都会导致宽度和高度为-1的位图对象,因此当我尝试将位图用作纹理时,它不会显示.在mapview渲染后,我单击按钮时将位图保存代码称为调用代码,但是它仍然给出相同的结果.

有没有人设法做到这一点?

解决方法:

我在尝试利用图形缓存时遇到了类似的问题.我发现对我有帮助的一些项目:

>确保立即复制图形缓存. Android也可以并且也将回收绘制缓存的位图.我在用它绘制视图时,让Android破坏了位图缓存.
>由于某种原因,在检索缓存之前将其破坏会给我带来更一致的结果.

这是我正在使用的工作代码:

// Disable caching, destroy the cache, and force a rebuild
imageView.setWillNotCacheDrawing(false);
imageView.destroyDrawingCache();
imageView.buildDrawingCache();

// Copy the drawing cache before the system recycles it
Bitmap cachedImage = Bitmap.createBitmap(imageView.getDrawingCache());

另请注意,我使用的是ImageView,但我希望MapView的代码路径相同.

最后,在您发布的代码示例中,您将创建一个位图大小与地图视图相同.您复制此位图,然后将结果丢弃.然后,将画布设置为此位图支持,然后尝试将位图绘制到位图. (是的,我输入正确.)尝试类似这样的方法来代替您的画布代码

Bitmap mapCache = /* Get this using the previous code */
Bitmap bmap = Bitmap.createBitmap(mMapView.getWidth(), mMapView.getHeight(),
                        Bitmap.Config.ARGB_8888);
Canvas offscreencanvas = new Canvas(bmap);
offscreencanvas.drawBitmap(mapCache, 0, 0, null);

标签:google-maps,bitmap,android
来源: https://codeday.me/bug/20191208/2090668.html