importar - poner imagen en jpanel java
¿Cómo configuro la imagen de fondo con picasso en el código? (2)
Sé que picasso carga la imagen en imageview, etc. pero, ¿cómo configuro la imagen de fondo de mi diseño utilizando picasso? Por favor, cualquier ayuda será útil.
Mi código:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.relativelayout);
relativeLayout.setBackgroundResource(R.drawable.table_background);
Picasso.with(MainActivity.this)
.load(R.drawable.table_background)
.resize(200, 200)
.into(relativeLayout);
return relativeLayout;
}
Lo que tengo aquí da un error diciendo que no se puede resolver. Tengo un ScrollView y diseños relativos
La mejor manera de crear una transformación personalizada, por ejemplo, para el color de relleno:
public class BackgroundColorTransform implements Transformation {
@ColorInt int mFillColor;
public BackgroundColorTransform(@ColorInt int color) {
super();
mFillColor = color;
}
@Override
public Bitmap transform(Bitmap bitmap) {
// Create another bitmap that will hold the results of the filter.
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap out = Bitmap.createBitmap(width, height, bitmap.getConfig());
Canvas canvas = new Canvas(out);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
canvas.drawColor(mFillColor);
canvas.drawBitmap(bitmap, 0f, 0f, paint);
bitmap.recycle();
return out;
}
@Override
public String key() {
return "BackgroundColorTransform:"+mFillColor;
}
}
Uso:
mPicasso.load(imageUrl)
.transform(new BackgroundColorTransform(ContextCompat.getColor(getContext(),R.color.black)))
.into(mLogoImageView);
Si desea agregar una imagen vectorDrawable use la transformación:
public class AddVectorDrawableTransform implements Transformation {
private Drawable mDrawable;
@ColorInt int mTintColor;
public AddVectorDrawableTransform(Drawable drawable, @ColorInt int tintColor) {
super();
mDrawable = drawable;
mTintColor = tintColor;
}
@Override
public Bitmap transform(Bitmap bitmap) {
// Create another bitmap that will hold the results of the filter.
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Bitmap out = Bitmap.createBitmap(width, height, bitmap.getConfig());
Canvas canvas = new Canvas(out);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
canvas.drawBitmap(bitmap, 0f, 0f, paint);
Drawable drawable = mDrawable.mutate();
drawable = DrawableCompat.wrap(drawable);
DrawableCompat.setTint(drawable, mTintColor);
DrawableCompat.setTintMode(drawable, PorterDuff.Mode.SRC_IN);
// mDrawable.setColorFilter( mTintColor, PorterDuff.Mode.MULTIPLY);
drawable.setBounds(width/4, height/4, 3*width/4, 3*height/4);
drawable.draw(canvas);
bitmap.recycle();
return out;
}
@Override
public String key() {
return "AddDrawableTransform:"+mDrawable+", "+mTintColor;
}
}
Utilizar callback de picasso.
Picasso.with(getActivity()).load(R.drawable.table_background).into(new Target(){
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
mainLayout.setBackground(new BitmapDrawable(context.getResources(), bitmap));
}
@Override
public void onBitmapFailed(final Drawable errorDrawable) {
Log.d("TAG", "FAILED");
}
@Override
public void onPrepareLoad(final Drawable placeHolderDrawable) {
Log.d("TAG", "Prepare Load");
}
})
ACTUALIZAR:
Por favor verifique this también. Como @OlivierH mencionado en el comentario.