当新引入的 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
会使您的设备表现得像一个物理上更小、像素密度更高的设备。但我不明白我应该在这里做什么。如果我将逐渐变小的图像放入越来越高的分辨率,那么它在真正的大显示器上看起来并不好。还是我不明白什么?
任何指针将不胜感激。
原文由 Brian Rak 发布,翻译遵循 CC BY-SA 4.0 许可协议
我的情况是,将(高分辨率)启动位图从 drawable 移动到 drawable-xxhdpi 是解决方案。
我有同样的问题。我没有怀疑我的启动画面是问题所在,因为它 是 在应用程序启动时显示的,但事实证明启动画面是问题所在。
在我的例子中,初始屏幕具有 xxhdpi 分辨率,并且它被错误地放置在 drawable 文件夹中,而不是 drawable-xxhdpi 。这使得 Android 假设初始屏幕具有 mdpi 分辨率并将图像缩放到所需大小的 3*3 倍并尝试创建位图。