Как я могу отображать размытое изображение так же, как изображение профиля WhatsApp?

#android #kotlin #android-imageview #android-glide

Вопрос:

Как я могу отобразить размытое изображение, если оно не полностью получено с сервера/api? Я просто хочу сделать то же самое, что и с изображением профиля WhatsApp, то есть отображать необработанное изображение оригинала до тех пор, пока реальное изображение не загрузится.

Ответ №1:

Вы можете установить миниатюру до тех пор, пока не будет загружено исходное изображение.
Миниатюра-это в основном изображение низкого качества и небольшого размера, поэтому оно загружается мгновенно.
Скольжение обеспечивает более легкий способ сделать это.

Код

  val thumbnailRequest = Glide.with(this)
     .load("https://picsum.photos/50/50?image=0")

Glide.with(this)
        .load("https://picsum.photos/2000/2000?image=0")
        .thumbnail(thumbnailRequest)
        .into(imageThumbnail)
 

Комментарии:

1. Миниатюра будет работать нормально, но она должна использовать другое изображение, которое содержит другое изображение с меньшим качеством, но что, если в моем ответе API есть только одно изображение?

2. Вам нужно обновить два возвращаемых изображения , одно полное и одно для полного качества. Если вы загружаете изображения со стороны приложения , вы можете загрузить 2 изображения, одно низкого качества и одно полное, и вернуть их на сервер соответственно. Если вам нужен только эффект загрузки размытия, вы можете загрузить полное изображение и размыть его в течение нескольких секунд, прежде чем показывать фактическое изображение

Ответ №2:

Уменьшите изображение до очень маленького размера, скажем, 8×8 пикселей. Отправьте эти данные клиенту для заполнения при запуске загрузки . Это не должно быть больше, чем 4 * 8 * 8 = 256 бит или 0,25 КБ в размере, поэтому отправка его клиенту не будет проблемой, независимо от того, насколько низкая скорость подключения клиента. Когда загрузка будет завершена, вы сможете перейти на исходное изображение.