Вы можете использовать Target Пикассо:
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) {
}
});
UPDATE
Как @BladeCoder упоминалось в комментариях, Пикассо держит слабую ссылку на целевые объекты, поэтому он, скорее всего, собирать мусор.
Итак, следуя Jake Wharton's comment на один из вопросов, я думаю, что это может быть хорошим способом пойти:
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
}
}
код этого примера не всегда может работать: вы * * должны держать жесткую ссылку на ваш 'Target' или это может быть сборщиком мусора перед загрузкой изображений, поскольку Пикассо продолжает слабый ссылки на целевые объекты. – BladeCoder
@BladeCoder Вы правы. Я редактирую свой ответ, чтобы решить эту проблему. Спасибо – mmark
У меня возникли проблемы с использованием цели Пикассо, как вы показали выше ... (любая помощь оценивается) http://pastebin.com/uY2LnSDV – AndroidAndroidAndroid