几天来我一直在尝试让一个非常大的 Canvas 工作。
将所有内容都添加到 Canvas 后, Canvas 的宽度有时为 30,000,但是如果将此代码添加到 ondraw 方法中,水平滚动会变得非常慢。
然后我尝试将所有内容添加到位图中,然后在 onDraw 方法中绘制位图。虽然这对于较小的位图效果很好,但对于 30,000 宽的位图,我遇到了内存不足错误。
任何人都可以提出解决方案,我不确定现在该尝试什么。
谢谢
编辑我也尝试将位图更改为 Config.RGB_565 但我仍然遇到内存错误。
最佳答案
处理大型 Canvas 将不断遇到 OutOfMemoryExceptions。一个 Canvas 写入一个 Bitmap,像 30,000 by X Bitmap 这样的东西会占用大量内存。我认为您最好的选择是跟踪可见屏幕相对于您要显示的内容的位置,并且只将需要的内容写入 Canvas 。
例如,如果用户向下和向左滚动 100 像素,那么对于 1024 x 768 显示,将在 30,000 x 30,000 虚拟 Canvas (您不整体绘制)。
关于用于极宽 Canvas 的 Android 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022076/