In Android 5.0 Lollipop, una classe è stato aggiunto per aiutare a estrarre i colori utili da una bitmap. La classe Palette, trovata in android.support.v7.grafica, possono estrarre i seguenti colori:
- vibrante
- vibrante scure
- luce vibrante
- sordina
- sordina scuro
- sordina Luce
Questa pagina di allenamento Android dà tutti i dettagli necessari per utilizzare la classe (l'ho provato io stesso in Android Studio ed è stato molto semplice): http://developer.android.com/training/material/drawables.html#ColorExtract
Per citare:
L'Android Support Library r21 e soprattutto include la classe Palette , che permette di estrarre i colori di primo piano da un'immagine. Per estrarre questi colori, passare un oggetto Bitmap al metodo statico Palette.generate() nel thread in background in cui si caricano le immagini. Se non è possibile utilizzare quel filo, chiamare il metodo Palette.generateAsync() e fornire un ascoltatore invece. *
È possibile recuperare i colori di spicco l'immagine utilizzando il getter metodi nella classe Palette, come ad come Palette.getVibrantColor.
per utilizzare la classe Palette nel progetto, aggiungere il seguente Gradle dipendenza modulo della tua app:
dependencies {
...
compile 'com.android.support:palette-v7:21.0.+'
}
* Se avete bisogno di utilizzare generateAsync(), ecco come fare:
Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
public void onGenerated(Palette palette) {
// Do something with colors...
}
});
MODIFICA: Poiché la domanda chiede come estrarre i colori da una risorsa estraibile, è necessario convertire il drawable in una bitmap per utilizzare la tecnica che ho descritto. Per fortuna, che è abbastanza semplice utilizzando BitmapFactory:
Bitmap icon = BitmapFactory.decodeResource(context.getResources(),
R.drawable.icon_resource);`
fonte
2015-01-26 05:58:17
una nuova API è stato aggiunto con il Lollipop che aiuta a estrarre i colori di primo piano da una bitmap. Vedi [la mia risposta sotto] (http://stackoverflow.com/a/28145358/1956632) per i dettagli. Poiché la classe Palette menzionata si trova nella libreria support7, dovrebbe funzionare anche nelle versioni precedenti di Android. –
supporto per la tavolozza di Android v7 lib lo fa per noi. Tutti cercano demo http://code2concept.blogspot.in/2015/10/android-support-v7-palette-demo.html – nitesh