Intenta entender el código correctamente antes de adaptarlo a tu proyecto si ttienes algo que aportar puedes decirlo en los comentarios.
Solución:
Puedes usar el Blanco de Picasso:
Picasso.with(this).load("http://imageUrl").into(new Target()
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from)
mYourLayout.setBackground(new BitmapDrawable(bitmap));
@Override
public void onBitmapFailed(Drawable errorDrawable)
@Override
public void onPrepareLoad(Drawable placeHolderDrawable)
);
ACTUALIZAR
Como @BladeCoder mencionó en el comentario, Picasso tiene una referencia débil a los objetos Target, por lo que es probable que se recolecte basura.
Entonces, siguiendo el comentario de Jake Wharton sobre uno de los problemas, creo que esta podría ser una buena manera de hacerlo:
CustomLayout mCustomLayout = (CustomLayout)findViewById(R.id.custom_layout)
Picasso.with(this).load("http://imageUrl").into(mCustomLayout);
CustomLayout.java:
public class CustomLayout extends LinearLayout implements Target
public CustomLayout(Context context)
super(context);
public CustomLayout(Context context, AttributeSet attrs)
super(context, attrs);
public CustomLayout(Context context, AttributeSet attrs, int defStyleAttr)
super(context, attrs, defStyleAttr);
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from)
setBackground(new BitmapDrawable(getResources(), bitmap));
@Override
public void onBitmapFailed(Drawable errorDrawable)
//Set your error drawable
@Override
public void onPrepareLoad(Drawable placeHolderDrawable)
//Set your placeholder
Uso un ImageView como ImageHolder temporal. Al principio, cargue la imagen con picasso en ImageView y configure el fondo de diseño de este ImageView usando getDrawable.
ImageView img = new ImageView(this);
Picasso.with(this)
.load(imageUri)
.fit()
.centerCrop()
.into(img, new Callback()
@Override
public void onSuccess()
myLayout.setBackgroundDrawable(img.getDrawable());
@Override
public void onError()
);
Ninguna de las soluciones anteriores funcionó para mí. Pero la solución de @Thiha fue la más cercana. Lo siguiente funcionó para mí:
final ImageView img = new ImageView(this);
Picasso.with(img.getContext()).load(url).into(img, new com.squareup.picasso.Callback()
@Override
public void onSuccess()
collapsingToolbarLayout.setBackgroundDrawable(img.getDrawable());
@Override
public void onError()
);
Te mostramos reseñas y puntuaciones
Si te gusta la informática, tienes la opción de dejar un artículo acerca de qué te ha impresionado de esta noticia.