Android carrega imagem no imageview com eficiência

Tenho o próximo problema: para evitar OutOfMemoryError, estou carregando minhas imagens grandes no ImageViews usando o Picasso da seguinte maneira:

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

E em atividade ou fragmento, estou carregando a imagem no ImageView

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

No entanto, tenho dois problemas:

A imagem é carregada com algum atraso (mas preciso carregá-la imideatamente)

centerCrop () não é o que eu preciso em alguns casos.

Como posso implementar algo como topCrop () ou bottomCrop ()? eu tenteihttps://github.com/cesards/CropImageView biblioteca, mas estou recebendo NullPointerException no método setFrame () (getDrawable () retorna nulo), porque a imagem ainda não foi carregada. Desde já, obrigado!

questionAnswers(1)

yourAnswerToTheQuestion