gpt4 book ai didi

android - 将 MapView 另存为位图

转载 作者:太空狗 更新时间:2023-10-29 12:56:32 24 4
gpt4 key购买 nike

我已经尝试了两种方法来将 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 也可以回收缓存绘制的位图。我在用它绘制 View 时让 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 的代码路径相同。

最后,在您发布的代码示例中,您将创建 map View 大小的位图。您复制此位图,然后丢弃结果。然后你设置你的 Canvas 由这个位图支持,然后你尝试将位图绘制到位图。 (是的,我输入的是正确的。)试试这样的东西,代替你的 Canvas 代码

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);

关于android - 将 MapView 另存为位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6221098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com