android 7.0适配 - 当Android N显示尺寸设置大于小时,“画布:尝试绘制太大的位图”




3 Answers

我的情况下,将(高分辨率)飞溅位图从drawable移动drawable-xxhdpi是解决方案。

我有同样的问题。 我没有怀疑我的启动画面是问题,因为它在应用程序启动时显示,但事实证明启动画面是问题所在。

我的情况下的启动画面有xxhdpi分辨率,它被错误地放在drawable文件夹中,而不是drawable-xxhdpi 。 这使Android假设启动画面具有mdpi分辨率并将图像缩放到所需大小的3 * 3倍并尝试创建位图。

api webview

当新引入的Display size操作系统设置设置为太大时,我有一个已发布的应用程序在Android N启动时崩溃。

当我查看logcat时,我看到以下消息:

java.lang.RuntimeException: Canvas: trying to draw too large(106,975,232 bytes) bitmap.

我在第一个Activity中将问题跟踪到ImageView,它显示了一个漂亮的大背景图像。 有问题的图像是2048x1066,位于我的通用drawables目录中,因此无论密度如何,都将使用此图像。

当“ Display size设置为“ Small时,一切正常。 但是当我进入Default ,它会停止工作。 如果我然后用较小的图像交换图像,它在Default ,但如果我上升到Large ,它会再次停止工作。

我的猜测是,调整Display size会使您的设备表现得像具有更高像素密度的物理上更小的设备。 但我不明白我应该在这做什么。 如果我为逐渐提高的分辨率逐渐放入较小的图像,那么在实际大型显示器上看起来效果不佳。 或者我不明白什么?

任何指针都将非常感激。




将您的图像在drawable中移动到mipmap-xxhdpi。您的图像是位图格式,因此您应该将图像放在mipmap文件夹中,然后它将工作




图标文件太大,Android无法高效,流畅地加载。 Android通过其智能算法识别这一点。

您可以使用asystat使用Final Android Resizer调整图标文件的大小。 将它们调整为“xhdpi”或更低。

将调整大小的照片放在可绘制或覆盖现有的大图标文件上。

然后,你完成了。




Related

android layout android-n android-7.0-nougat