1) пережимать на сервере картинки в несколько разрешений и качеств.
2) отдавать картинку пользователю исходя из того, что 1px картинки == 1dp экрана, то есть для экрана какого-нибудь Nexus 6P 4K отдаём ту же самую картинку, что и для экрана телефона с 720p.
Не надо для 4K экранов отдавать 4K картинку.
3) Пережать с качеством JPEG 82% (я так делал, вы можете выбрать своё качество).
4) Обязательно делать префетчинг: скачивать сразу несколько картинок вперёд. Попытаться сделать алгоритм умным и агрессивным: если юзер смотрит на незагрузившуюся картинку, не скачивать больше ничего, кроме неё. А если он уже пролистнул картинку, которая так и не загрузилась, то остановить её загрузку.
5) Можно заморочиться и повышать качество картинки, когда пользователь не сидит на
metered сети