package com.mirhoseini.marvel.util; import android.databinding.BindingAdapter; import android.graphics.Color; import android.graphics.drawable.BitmapDrawable; import android.support.v7.graphics.Palette; import android.view.ViewGroup; import android.widget.ImageView; import com.mirhoseini.marvel.R; import com.squareup.picasso.Picasso; /** * Created by Mohsen on 20/10/2016. */ public class CustomBindingAdapter { @BindingAdapter("bind:imageUrl") public static void loadImage(ImageView imageView, String url) { if (null == url) { imageView.setImageResource(R.drawable.default_image); } else { Picasso.with(imageView.getContext()) .load(url) .error(R.drawable.default_image) .into(imageView, new PaletteCallback(imageView) { @Override public void onPalette(Palette palette) { if (null != palette) { ViewGroup parent = (ViewGroup) imageView.getParent().getParent(); parent.setBackgroundColor(palette.getDarkVibrantColor(Color.GRAY)); } } }); } } public static abstract class PaletteCallback implements com.squareup.picasso.Callback { private final ImageView target; public PaletteCallback(final ImageView t) { target = t; } @Override public void onSuccess() { onPalette(Palette.from(((BitmapDrawable) target.getDrawable()).getBitmap()).generate()); } @Override public void onError() { onPalette(null); } public abstract void onPalette(final Palette palette); } }