Ноя
10

Градиент и Андроид

Столкнулся тут с такой проблемой — картинка с градиентом нормально отображается на мониторе, но на мобиле видны ужасные ломанные переходы (banded gradient). Но при этом, когда смотрю ту же картинку через «Галерею» на мобиле, то картинка отображается нормально.

Значит, решаю, дело в программе. Порывшись в буржунете, понял, что проблема распространенная. Однако там все примеры даются на основе программно-генерируемого градиента. Решение такое:

1
2
3
4
5
6
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
Window window = getWindow();
window.setFormat(PixelFormat.RGBA_8888);
}

Этот код пишется в теле Activity. Смысл в том, чтобы включить режим вывода графики по 8 бит на пиксель (+8 на прозрачность). А по-умолчанию, получается, графика показывается в режиме 5-6-5 (т.е. кол-во цветов искусственно уменьшено). Как же тогда работает встроенный в Андроид просмотрщик изображений? Он выводит картинки как надо.

Однако данный код у меня не сработал. Картинка по-прежнему «плохо» выглядела. Вот пример:

Градиент (оригинал)


Градиент на мобиле

Решение нашлось — нужно добавить в исходную картинку «шум». Для этого есть плагин для Photoshop, называется «5_6_5 filter». Искать и качать здесь.

Конечно, размер картинки вырастает (в PNG формате). Однако можно сохранить и в JPG с приемлемым качеством... Вот результат:

Градиент на мобиле в режиме 5-6-5

P.S. Не знаю почему, но все картинки на мобиле показываются ярче, чем на мониторе. Приходится делать оригиналы темнее.




Прокомментировать



ЗАДАЙ СВОЙ ВОПРОС