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

问题描述 投票:0回答:2

我通过这个工厂的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

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

android image drawable
2个回答
0
投票

2341x1246 PNG 2.55 MB

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

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

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

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

imageView.scaleType = ImageView.ScaleType.FIT_XY

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.