In Android Lollipop, a new defining features of material design is the use of color.
You can get more infomation in here: Material Design Color
In this article, I will show you how to extract prominent colors from a bitmap for customizing UI. I also have a sample for you which use Palette object to get color profile of bitmap.

android_palette_colorIn the sample, I get vibrant color from a bitmap then change background color for ActionBar with this.

Import the Palette

To get started, you need import the palatte support library into your project.

compile ''

Add to the project’s build.gradle file and run gradle sync. With Palette, you can get different color profiles from the image.

  • Vibrant
  • Vibrant Dark
  • Vibrant Light
  • Muted
  • Muted Dark
  • Muted Light

Instances are created with a Palette.Builder which supports several options to tweak the generated Palette.

Generation should always be completed on a background thread, ideally the one in which you load your image on. Palette.Builder supports both synchronous and asynchronous generation:

// Synchronous
Palette p = Palette.from(bitmap).generate(); // Asynchronous
Palette.from(bitmap).generate(new PaletteAsyncListener() {
   public void onGenerated(Palette p) { // Use generated instance } });


Swatch objects represents a color swatch generated from an image’s palette. The RGB color can be retrieved by calling getRgb().

Each Palette has a set of six predefined color profiles, I use six TextViews to show this.

mVibrantTextView = (TextView) findViewById(;
mLightVibrantTextView = (TextView) findViewById(;
mDarkVibrantTextView = (TextView) findViewById(;
mMutedTextView = (TextView) findViewById(;
mLightMutedTextView = (TextView) findViewById(;
mDarkMutedTextView = (TextView) findViewById(;

Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
 @Override public void onGenerated(Palette palette) {
  setViewSwatch(mVibrantTextView, palette.getVibrantSwatch());
  setViewSwatch(mLightVibrantTextView, palette.getLightVibrantSwatch());
  setViewSwatch(mDarkVibrantTextView, palette.getDarkVibrantSwatch());
  setViewSwatch(mMutedTextView, palette.getMutedSwatch());
  setViewSwatch(mLightMutedTextView, palette.getLightMutedSwatch());
  setViewSwatch(mDarkMutedTextView, palette.getDarkMutedSwatch());

private void setViewSwatch(TextView view, Palette.Swatch swatch) {
 if (swatch != null) {
 } else {

In additional to the standard profile Swatch objects, each Palette contains a list of general Swatch objects generated from the bitmap. These can retrieved from the Palette as a List by using the getSwatches() method.

for (Palette.Swatch swatch : palette.getSwatches()) {
  //do sth with swatch


In this article, you have learned about the Palette and how to extract swatches of color from bitmap. You can get complete source code in here: Android Palette (module: androidpalette)