android - "Canvas: trying to draw too large bitmap"当Android N Display Size 设置为大于Small 时

标签 android layout android-7.0-nougat

当新引入的 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/

相关文章:

android - 如何在牛轧糖的多窗口模式下定位 toast ?

android - 我想知道在 Android 7 上录制通话是否可能,是否会实现?

html - 将两个 div 在包装器内垂直居中(动态内容和包装器下方的内容)

c# - WPF - 在没有设计器的情况下创建实体布局

android - 滚动时选项卡指示器不随选项卡或 fragment 移动,当我们在没有操作栏的 Tablayout 中单击选项卡时它工作正常

java - Android TV 模拟器无法识别媒体键事件

html - 全有背景有固定内容

java - 尝试使用 Sugar ORM 插入两个字段时应用程序停止工作

android - TextView 显示 "false"而不是资源文本

android - 获取在线数据并将其存储在 Android 中的最佳方式