如果在drawable-xxhdpi中,图像会部分显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在drawable-xxhdpi中,图像会部分显示相关的知识,希望对你有一定的参考价值。

我通过这个工厂的ImageSwitcher显示图像:

    view_background.setFactory {
        val imageView = ImageView(this@MainActivity)
        imageView.scaleType = ImageView.ScaleType.CENTER_CROP
        imageView
    }

我正在Nexus 5仿真器上正确显示这个2341x1246 PNG 2.55 MB图像:

enter image description here

但是,如果我在Nexus 6上使用它,它会崩溃:

E/androidRuntime: FATAL EXCEPTION: main
    Process: com.example.llovagn.t4r, PID: 4693
    java.lang.RuntimeException: Canvas: trying to draw too large(142936136bytes) bitmap.

按照drawable-xxhdpi回答中的建议把它放在this中,它现在在两个设备上都是这样的:

enter image description here

哪些是我不想要的东西(第一种方式是正确的)。为什么以及如何解决这个问题?

答案

2341x1246 PNG 2.55 MB

画布:试图绘制太大(142936136bytes)的位图

这看起来不是一个好方法。减小图像的大小并将图像放在drawable目录中。

这是因为你把图片放在“drawable-xxhdpi”里面。看看尺寸in here

但是,按照我的建议,使用FIT_XY来适应图像:

imageView.scaleType = ImageView.ScaleType.FIT_XY

您的应用程序中不需要2.5 MB的映像。那个尺寸太大了。

另一答案

为了避免这种错误,尝试使用尽可能小的图像分辨率,图像视图也应该很小,你也可以在更大和更高分辨率的设备上获得OOM。最好的方法是在背景视图上使用png图像,其中背景可以是纯色或渐变。通过这种方式,您可以使用可能不需要填充整个屏幕尺寸的较小图像。

以上是关于如果在drawable-xxhdpi中,图像会部分显示的主要内容,如果未能解决你的问题,请参考以下文章

DRAWABLE-V21 中的 Android drawble-xhdpi、drawable-xxhdpi、drawable-xxxhdpi 子文件夹也适用于 DRAWABLE-V23?

BUGandroid.content.res.Resources$NotFoundException: File res/drawable-xxhdpi/toolbar_line.png from

为签名部分中的图像解析电子邮件

带有侧部分标题图像的 UITableView

定义图像的部分并分配给悬停,单击事件

如何显示超大图像