После включения журналов я убедился, что исходное изображение действительно было кэшировано и, как предположил @Sputnik, проблема, по-видимому, была вызвана задержкой в создании преобразованного растрового изображения из исходного кэша изображений.
Но решение предварительного кэширования преобразованных изображений не является лучшим из них. Прежде всего, существует довольно много изображений, а оттенки серого требуются только тогда, когда пользователь нажимает на изображение в утилизаторе. Это может никогда не произойти, но мы уже кэшировали двойной размер изображений на всякий случай.
Таким образом, после игры с Пикассо и журналами, решение, которое работает для меня, состояло в том, чтобы использовать исходное изображение в качестве заполнителя.
так вместо
Picasso.get().load(getProductUrl(i.id)).placeholder(R.color.light_grey)
.error(R.color.light_grey).fit().centerCrop().transform(GrayScaleTransform()).into(productImage)
Я сделал это
Picasso.get().load(getProductUrl(i.id)).placeholder(productImage.drawable)
.error(R.color.light_grey).fit().centerCrop().transform(GrayScaleTransform()).into(productImage)
Таким образом, мой заполнитель - это исходное изображение, которое делает переход плавным и избавляет от возможных накладных расходов благодаря кэшированию всех преобразованных изображений.