package com.ov3rk1ll.kinocast.ui.helper; import android.graphics.Bitmap; import android.support.v4.util.LruCache; import android.support.v7.graphics.Palette; public class PaletteManager { private LruCache<String, Palette> cache = new LruCache<>(100); private static PaletteManager instance; public static PaletteManager getInstance(){ if(instance == null) instance = new PaletteManager(); return instance; } public interface Callback { void onPaletteReady(Palette palette); } public void getPalette(final String key, Bitmap bitmap, final Callback callback) { Palette palette = cache.get(key); if (palette != null) callback.onPaletteReady(palette); else if(bitmap == null){ callback.onPaletteReady(null); } else { Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() { public void onGenerated(Palette p) { cache.put(key, p); callback.onPaletteReady(p); } }); } } }