Android carga la imagen en la vista de imagen de manera eficiente

Tengo el siguiente problema: para evitar OutOfMemoryError, estoy cargando mis imágenes grandes en ImageViews usando Picasso de esta manera:

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

Y en actividad o fragmento, estoy cargando imagen en ImageView

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

Sin embargo, tengo dos problemas:

La imagen se carga con un poco de retraso (pero necesito cargarla inmediatamente)

centerCrop () no es lo que necesito en algunos casos.

¿Cómo puedo implementar algo como topCrop () o bottomCrop ()? He intentadohttps://github.com/cesards/CropImageView biblioteca, pero obtengo NullPointerException en el método setFrame () (getDrawable () devuelve nulo), porque la imagen aún no se cargó. ¡Gracias por adelantado!

Respuestas a la pregunta(1)

Su respuesta a la pregunta