Изображение отображается частично, если в drawable-xxhdpi - PullRequest
0 голосов
/ 08 октября 2018

Я отображаю изображение через ImageSwitcher с этой фабрикой:

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

И я правильно отображаю это 2341x1246 PNG 2,55 МБ изображение на эмуляторе Nexus 5:

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, как предложено в это ответ, теперь это выглядит следующим образом на обоих устройствах:

enter image description here

Что я что-то, что я действительно не хочу (первый способправильный).Почему и как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Чтобы избежать этой ошибки, старайтесь использовать как можно меньшее разрешение изображения, также изображение должно быть небольшим, вы также можете получить OOM на устройствах с большим и высоким разрешением.Лучшим способом было бы использовать изображение PNG на фоне фона, где фон может быть сплошным цветом или градиентом.Таким образом, вы можете использовать изображения меньшего размера, которые могут не заполнять весь экран.

0 голосов
/ 08 октября 2018

2341x1246 PNG 2,55 МБ

Холст: при попытке нарисовать слишком большой ( 142936136байт ) растровое изображение

Это не похоже на хороший подход.Уменьшите размер изображения и поместите изображение в каталог drawable.

Это происходит потому, что вы помещаете изображение в «drawable- xxhdpi ».Взгляните на размеры здесь .

Однако, после выполнения того, что я предложил, используйте FIT_XY, чтобы подогнать изображение:

imageView.scaleType = ImageView.ScaleType.FIT_XY

Вы выиграли 'В вашем приложении не требуется 2,5 МБ образа.Это слишком много с таким размером.

...