当新引入的 Display size
OS 设置设置为太大时,我有一个已发布的应用程序在 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 移动到 drawable-xxhdpi 是解决方案。
我遇到了同样的问题。我没有怀疑我的启动画面是问题所在,因为它在应用程序启动时显示,但事实证明启动画面是问题所在。
在我的例子中,启动画面的分辨率为 xxhdpi,它被错误地放置在 drawable 文件夹中,而不是 drawable-xxhdpi。这使得 Android 假设初始屏幕具有 mdpi 分辨率并将图像缩放到所需大小的 3*3 倍并尝试创建位图。
关于android - "Canvas: trying to draw too large bitmap"当Android N Display Size 设置为大于Small 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39111248/