当前位置: 首页 > 知识库问答 >
问题:

当Android N显示大小设置为大于小时,“画布:试图绘制太大的位图”

平俊茂
2023-03-14

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

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

在我的第一个活动中,我将这个问题追溯到一个ImageView,它显示了一个漂亮的大背景图像。问题中的图像是2048x1066,并且在我的通用drawables目录中,因此无论密度如何,都将使用此图像。

显示大小设置为时,一切正常。但是当我进入default时,它就会停止工作。如果我然后用一个较小的映像交换出来,它会在default下工作,但是如果我上升到large下,它会再次停止工作。

我的猜测是,调整显示大小会使您的设备表现得像一个像素密度更高的物理上更小的设备。但我不明白我该在这里做什么。如果我用越来越小的图像来获得越来越高的分辨率,那么在大屏幕上看起来就不太好了。还是我不明白什么?

如有任何指示,将不胜感激。

共有1个答案

郜谦
2023-03-14

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

我也有同样的问题。我并不怀疑我的闪屏是问题所在,因为它是在应用程序启动时显示的,但结果是闪屏是问题所在。

我的例子中的闪屏具有xxhdpi分辨率,并且它被错误地放在了drawable文件夹中,而不是drawable-xxhdpi。这使得Android假定初始屏幕具有mdpi分辨率,并将图像缩放到所需大小的3*3倍,并尝试创建位图。

 类似资料:
  • 我有一个发布的应用程序在Android N上启动时崩溃,因为新引入的

  • 我正在运行Ubuntu 16.04。在Android Studio上,当我试图在模拟器中运行我的应用程序时,我得到以下错误: 致命的例外:主要过程:项目名称在这里,PID: 2528java.lang.运行时间例外:画布:试图绘制太大(216090000bytes)位图。在android.view.DisplayListCanvas.throw如果不能绘制(DisplayListCanvas.ja

  • 问题内容: 我希望Matplotlib /Pyplot生成具有一致画布大小的图。也就是说,图形可以具有不同的大小以适应轴的描述,但是绘图区域(绘制曲线的矩形)应始终具有相同的大小。 有没有简单的方法可以做到这一点?pyplot.figure()的figsize选项似乎设置了图形的整体大小,而不是画布的整体大小,因此,每当轴描述占据或多或少的空间时,我都会得到不同的画布大小。 问题答案: 这是我对M

  • 我是Java的初学者,刚开始使用Intellij作为我的IDE。 当我使用它时,有时会延迟。 我更改了我的 xms 和 xmx 以获得更大的堆大小(xms = 1024,xmx = 2048),但它抛出了一个错误。 所以,我把它回滚了。 错误消息是这样的:“初始堆大小设置为大于最大堆大小的值”。 有什么问题? 如果可能,如何增加最大堆大小? 我用的是笔记本电脑,它有8GB内存。x64Intelli

  • 请看下面的P5代码 这个小应用程序的目的是在画布上拖放图像,根据“上传”图像的宽度和高度改变其大小。 使用:成功加载图像(至少显示图像)后,我将其宽度和高度分配给变量和。接着是画布大小的变化。。。这会导致一个错误,画布的大小与上传的图像相同(在上选中),但不显示任何内容。 使用:当禁用上的画布大小更改并单击画布时,调整大小会完美地显示图像。 应用程序需要在不点击的情况下工作,在删除图像后应该自动更