Android эффективно загружает изображение в изображение

У меня следующая проблема: чтобы избежать OutOfMemoryError, я загружаю свои большие изображения в ImageViews с помощью Picasso следующим образом:

public static RequestCreator picasso(final Context context, final int resourceId) {
    return Picasso.with(context)
            .load(resourceId)
            .fit()
            .centerCrop()
            .noFade();
}

И в деятельности или фрагмент, я загружаю изображение в ImageView

final ImageView backgroundImage = (ImageView) root.findViewById(R.id.background_image);
Util.picasso(getActivity(),R.drawable.background_soulmap)
            .into(backgroundImage);

Однако у меня есть две проблемы:

Изображение загружается с некоторой задержкой (но мне нужно загрузить его немедленно)

centerCrop () - это не то, что мне нужно в некоторых случаях.

Как я могу реализовать что-то вроде topCrop () или bottomCrop ()? я пробовалhttps://github.com/cesards/CropImageView библиотека, но я получаю NullPointerException в методе setFrame () (getDrawable () возвращает null), потому что изображение еще не загружено. Заранее спасибо!