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

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

黄景胜
2023-03-14

我有一个发布的应用程序在Android N上启动时崩溃,因为新引入的显示大小操作系统设置的值太大。

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

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

我已经在我的第一个活动中跟踪了这个问题,它显示了一个漂亮的大背景图像。有问题的图像是2048x1066,在我的通用绘图目录中,所以无论密度如何,都将使用该图像。

显示大小设置为时,一切正常。但当我转到默认值时,它停止工作。如果我用一个较小的图像交换图像,它将在默认值下工作,但如果我转到大的,它将再次停止工作。

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

任何指点都将不胜感激。


共有3个答案

慕高阳
2023-03-14

我不知道这对谁有帮助,但我还是把它留在这里吧。在我的情况下-问题是只有在三星设备与Android 7,问题是在飞溅屏幕比例

湛文乐
2023-03-14

在android:行之间的Manifest文件的application标记中添加以下代码后,我解决了这个问题。

android:hardwareAccelerated="false"
南门焱
2023-03-14

我的情况下,移动(hi-res)飞溅位图从绘图到绘图xxhdpi是解决方案。

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

在我的例子中,启动屏幕具有xxhdpi分辨率,它被错误地放置在可绘制文件夹中,而不是可绘制xxhdpi。这使得Android假定启动屏幕具有mdpi分辨率,并将图像缩放到所需大小的3*3倍,然后尝试创建位图。

 类似资料:
  • 当我在logcat中查找时,我看到以下消息: 在我的第一个活动中,我将这个问题追溯到一个ImageView,它显示了一个漂亮的大背景图像。问题中的图像是2048x1066,并且在我的通用目录中,因此无论密度如何,都将使用此图像。 当设置为时,一切正常。但是当我进入时,它就会停止工作。如果我然后用一个较小的映像交换出来,它会在下工作,但是如果我上升到下,它会再次停止工作。 我的猜测是,调整会使您的设

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

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

  • 除了oncreate之外,我的MainActivity是空的。我已经阅读了关于这个问题的其他帖子,但没有一个为我提供任何真正的解决方案。

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