Total Members Voted: 16
0 Members and 2 Guests are viewing this topic.
Или обложка альбома прилететь с интернета с запозданием.
В Android для вычисления цвета для фона уведомления берётся левая половина изображения, чтобы был плавный переход, так как обложка альбома отображается в правой части уведомления ...
Это частный случай, его принимать во внимание вообще не стОит, картинка может быть разделена и по вертикали на два преобладающих цвета (да и вообще, как угодно) - классический пример: небо и земля. Текст может располагаться в любой стороне от кавера, и сверху и снизу.
Другое дело, что выбрать фоном, а что цветом текста/других элементов? В скрипте это ещё можно проанализировать, скорректировать, в конце концов взять для того же текста контрастный цвет относительно преобладающего в кавере, а жёсткая ссылка на ресурс может привести в каком-то случае к почти нечитаемому тексту.
Речь не про то, что обложка альбома может быть по разному визуально разделена, а то что в дизайне скина может быть плавный переход в один сплошной цвет с любой стороны от обложки альбома.
В Android плавный переход слева и вычисляется цвет для фона на основе левой половины обложки альбома всегда, независимо от того, как визуально разделена обложка альбома.
Цвет для текста специально вычисляется таким образом, чтобы был читаемым и достаточно контрастным поверх цвета фона. То есть цвет текста зависит от цвета фона.
Резюме: не хорошо вычислять цвет по половинке картинки, в оставшейся может оказаться совсем другая палитра.
setRegion()This method indicates what area of the bitmap the builder uses when creating the palette. You can only use this method when generating the palette from a bitmap, and it does not affect the original image.
Тогда напрашивается свой нотификатор со своими внутренними переменными, как сделано для спектрума.
Тогда, в идеале, нужно сделать сразу хорошо и гибко и реализовать извлечение палитры цветов из задаваемого региона изображения
Code: [Select] private static Palette.Swatch findBackgroundSwatch(Palette palette) { // by default we use the dominant palette Palette.Swatch dominantSwatch = palette.getDominantSwatch(); ...
private static Palette.Swatch findBackgroundSwatch(Palette palette) { // by default we use the dominant palette Palette.Swatch dominantSwatch = palette.getDominantSwatch(); ...
В Android для вычисления цвета для фона уведомления берётся левая половина изображения, чтобы был плавный переход, так как обложка альбома отображается в правой части уведомления:
Я склоняюсь к алгоритму, что заложен Windows - он берет цветной, частоиспользуемый и самый яркий цвет из картинки после квантования. Я думаю, цвета акцента нам будет более, чем достаточно.
А второй цвет для текста, рассчитанный на основе обложки альбома?Можно самому выбирать из белого или чёрного на основе контраста с фоном, но это будет хуже выглядеть, чем цвет из обложки, как тут:
Его можно посчитать на основе первого цвета (как раз в контраст)