Несоответствие Пикассо и Койла в выборе размера изображения?

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

Пикассо: fit().centerInside()

Катушка: scale(Scale.FILL).crossfade(true) (Я также пробовал с FIT, те же результаты)

ImageView: adjustViewBounds = true; scaleType = CENTER_INSIDE с шириной MATCH_PARENT и постоянной высотой в пикселях.

1 ответ

Решение

Катушка автоматически подстраивается под тип шкалы ImageView поэтому настраивать масштаб не нужно.

Пикассо нет, а Пикассо .fit().centerInside() на самом деле не эквивалентно ImageViewс CENTER_INSIDE но FIT_CENTER (это увеличит изображение так, чтобы хотя бы одно измерение соответствовало ImageView). Нет эквивалентаCENTER_INSIDE с Пикассо, но это самые близкие варианты:

  • Вы можете просто удалить .fit().centerInside() и пусть ImageView уменьшите масштаб изображения, если оно больше, но если изображение очень большое, оно будет потреблять много памяти (и может не загрузиться, если размер текстуры больше максимального размера устройства).
  • Ты можешь использовать .resize(width, height).centerInside().onlyScaleDown() после измерения размера ImageView вручную.

Если вы хотите, чтобы Coil изменил размер изображения так же, как Пикассо с .fit().centerInside(), затем просто измените тип шкалы ImageView к FIT_CENTER.

Другие вопросы по тегам