Pull to refresh

Еще один cкрипт генерации иконок для Android

Reading time 2 min
Views 8.7K
Привет, Хабр!

Небольшое вступление


Довольно давно я работаю тестировщиком мобильных приложений. Преимущественно, android-приложений (хотя были и WinCE, и iOS). Преимущественно, руками (хотя пробовал и автоматизировать с monkeyrunner и uiautomator). В последнее время все больше времени приходится уделять проектированию интерфейсов, вопросам менеджмента, релизам и другим делам. Одним словом, задачки приходится решать хоть обычно и несложные, но довольно разнообразные. Об одной из них мне бы хотелось рассказать.

В чем, собственно, дело


Недавно мы с коллегой в команде Rumsunrise экспериментировали с поддержкой android 5 и material design в наших приложениях. В процессе подготовки проекта столкнулись с неожиданной мелкой проблемой из области дизайна.

Дело в том, что некоторые иконки из стандартного icon pack мы переименовали, чтобы было удобнее их использовать в своих проектах. А с выходом нового Android и, соответственно, нового icon pack от Google, нам нужно было подложить в проект и новые иконки.

Что это значило для нас? Подобрать новые иконки из material-design-icons для каждого значения dpi и разложить их по нужным директориям. Далее, в каждой директории переименовать иконки в соответствии с тем, как принято в проекте. Когда иконок две-пять, проблем нет — руками это делается быстро и безболезненно. Но если иконок, допустим, штук 25, то переименовывать даже часть из них вручную долго и неинтересно. А если учесть, что кроме иконок есть и другая графика (которая, к слову, может время от времени меняться), то ситуация была совсем грустной.

И тут мы подумали, что было бы неплохо проделать эту работу один раз для иконок и графики, имеющих самое большое разрешение (сейчас это — xxxhdpi), а всю остальную работу сделать скриптом.

Что же Гугл? Беглое исследование вопроса навело нас на некоторое количество скриптов для Gimp и Photoshop и на инструменты вроде генератора иконок из набора Android Asset Studio. Нас это, честно говоря, не очень устраивало. Как минимум, потому, что нужно было делать сразу и много. Чтобы не ресайзить, переименовывать и не раскладывать все иконки и графику вручную, написали простой (можно даже сказать, примитивный) скрипт на python, который теперь делает это за нас.

Итак, у меня есть набор xxxhdpi графики, готовой к употреблению в android-проекте. Из нее мне нужно получить иконки всех необходимых размеров и сложить их по соответствующим директориям.

Все, что мне нужно сделать теперь, это:

Сложить готовые нужные xxxhdpi-иконки в какую-нибудь директорию и сделать:

$ iconic2.py /path/to/xxxhdpi/icons

Что именно делает скрипт:

  • создает в указанной директории поддиректории drawable-*dpi;
  • берет xxxhdpi изображения;
  • уменьшает их до необходимых размеров;
  • раскладывает по соответствующим директориям;
После этого остается только забрать готовые наборы и положить их в проект.

Для изменения размеров иконок мы пользуемся PIL или Pillow (для ubuntu x64). Так что предварительно стоит сделать:
$ sudo apt install pillow

Или то, что вы обычно делаете для установки пакетов в вашем дистрибутиве.

Сам скрипт доступен в mercurial-репозитории на Bitbucket. Хочу сказать, что скрипт не претендует на звание универсального инструмента или образца хорошего кода. Мы знаем, что в нем есть еще много мест, которые можно сделать лучше. Но уже сейчас он работает и экономит нам время. Надеюсь, сэкономит он его и вам.
Tags:
Hubs:
+3
Comments 15
Comments Comments 15

Articles