如果图像处于drawable-xxhdpi,则部分显示

时间:2018-10-08 18:54:47

标签: android image drawable

我正在与此工厂一起通过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.

通过按照this答案中的建议将其放入drawable-xxhdpi中,这两个设备现在都看起来像这样:

enter image description here

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

2 个答案:

答案 0 :(得分:0)

  

2341x1246 PNG 2.55 MB

     

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

这似乎不是一个好方法。减小图像的尺寸,然后将图像放入drawable目录中。

发生这种情况是因为您将图片放在“ drawable- xxhdpi ”中。看看尺寸in here

但是,按照我的建议进行操作之后,请使用FIT_XY调整图像大小:

imageView.scaleType = ImageView.ScaleType.FIT_XY

您的应用程序中不需要2.5 MB的图像。这样的大小实在太多了。

答案 1 :(得分:0)

为避免此错误,请尝试使用尽可能小的图像分辨率,而且图像视图也应该很小,您也可以在较大和高分辨率的设备上获得OOM。 最好的方法是在背景视图上使用png图像,其中背景可以是纯色或渐变。这样,您可以使用较小的图像,而这些图像可能不需要占据整个屏幕尺寸。