Изменение фона представления в соответствии с цветом обложки альбома

Здравствуйте, я работаю над музыкальным проигрывателем для Android, и мне нужна помощь в том, чтобы сделать цвет фона таким же, как обложка альбома воспроизводимой песни, вроде Sony Walkman. Может кто-нибудь показать, как это можно сделать, или хотя бы получить меня на пути к тому, как это должно быть сделано.

Я недавно запустил Android, так что полегче со мной, и извините за плохой английский


person ray chamoun    schedule 04.09.2014    source источник
comment
как вы собираетесь решить, какой пиксель изображения выбрать для цвета фона?   -  person Sagar Pilkhwal    schedule 04.09.2014
comment
stackoverflow.com/questions/7807360 / stackoverflow.com/questions/6272859/, надеюсь, эти ссылки помогут вам.   -  person Awais    schedule 04.09.2014
comment
Спасибо за ваш быстрый ответ, я хочу, чтобы доминирующий цвет изображения был выбран для фона, и спасибо Awais за ссылки, я проверю их.   -  person ray chamoun    schedule 04.09.2014


Ответы (1)


Вы можете использовать библиотеку поддержки палитры v7. Он включает в себя класс Palette, который позволяет извлекать яркие цвета из изображения.

https://developer.android.com/reference/android/support/v7/graphics/Palette.html

Пример

введите описание изображения здесь

build.gradle

compile 'com.android.support:palette-v7:23.4.0'

Действие или фрагмент

public void updatePlayerBar(Bitmap bitmap) {
    Palette.from(bitmap).generate(new Palette.PaletteAsyncListener() {
        public void onGenerated(Palette palette) {
            Palette.Swatch swatch = palette.getVibrantSwatch();
            if (swatch == null) swatch = palette.getMutedSwatch(); // Sometimes vibrant swatch is not available
            if (swatch != null) {
                // Set the background color of the player bar based on the swatch color
                mContent.setBackgroundColor(swatch.getRgb());

                // Update the track's title with the proper title text color
                mTitle.setTextColor(swatch.getTitleTextColor());

                // Update the artist name with the proper body text color
                mArtist.setTextColor(swatch.getBodyTextColor());
            }
        }
    });
}
person Andrew Terekhine    schedule 15.10.2016