微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

适用于极宽画布的Android选项

我一直试图让一个非常大的画布工作几天.

将所有内容添加到画布后,画布的宽度有时为30,000,但如果将此代码添加到ondraw方法,则滚动浏览变得非常慢.

然后我尝试将所有内容添加到位图,然后在onDraw方法中绘制位图.虽然这对于较小的位图工作正常,但是对于30,000宽的位图,我的内存错误.

任何人都可以建议一个解决方案,我不知道现在该尝试什么.

谢谢

编辑我也尝试将位图更改为Config.RGB_565但我仍然得到内存错误.

解决方法:

您在ArrayList中有多少条目,它看起来非常大.

根据我的理解,你在onDraw()中绘制所有内容时没有OoM问题,但它真的很慢?如果是这种情况,最可能的原因是你正在调用大量的drawText,这非常慢,基本上如果你有10000个字符串要绘制,系统将不得不测量它们中的每一个以便确定给定的String是否在大画布上可见,然后实际的绘图部分也很慢.

您可以测试绘制所有文本所花费的时间,并查看是否是这种情况.

如果确实如此,那么最简单的方法是将每个字符/数字映射到位图,您可以让艺术家创建PNG文件,或者在onCreate(Bundle)或其他一些名称中绘制您需要的每个唯一字符. -once-per-Activity-creation方法,将位图放在String-to-Bitmap HashMap中,而不是调用

canvas.drawText(bellNumber, xPad, mOriginY, paint); 

你打电话的东西

canvas.drawBitmap(hash.get(bellNumber), src, dst, paint); //remember to reuse src & dst

这将完全绕过String相关的绘图开销,并且应该使您的onDraw操作更快.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐