Добрый день, Хабражитель!
Уверен с форматом nine-patch уже все давным-давно знакомы, вероятно даже не раз пользовались им в своих Android-проектах (а может даже и где-то ещё). Также о нём чуть менее года назад skkap писал небольшую статью о том, что это за формат, и «с чем его едят». Также он описал инструмент, предлагаемый для быстрого редактирования этих самых файлов.
Собственно, прошёл уже почти год с того момента и я, опять наткнувшись на ту статью и вспомнив жалобы знакомых на неудобство этого самого «инструмента», решил посмотреть нет ли каких других вариантов и, к моему большому удивлению, я таковых не нашёл. Вероятно потому, что формат сам из себя ничего сложного и специфичного не представляет (при желании nine-patch файлы можно редактировать почти в любом графическом редакторе поддерживающем png) и тем более уже есть готовый инструмент (пусть и не самый удобный).
Тут я и решил лично взяться за дело…
Итак, за несколько дней на основе своей же разрабатываемой библиотеки мне удалось добиться достаточно неплохих, как мне кажется, результатов — ими бы я и хотел поделиться с вами. Пусть ещё не сглажены все углы, есть некоторые недочёты и, возможно, баги (ну а где их нет), но всё же…
Собственно, само небольшое приложение-редактор выглядит вот так:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/410/661/6f7/4106616f78ea5c6a3278cb9b7d3cf911.png)
Несколько преимуществ по сравнению с ранее упомянутой «древней» тулзой:
Собственно, при работе с этим редактором вам придётся иметь дело с несколькими его частями…
Основной тулбар
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/a61/7fb/4dc/a617fb4dc0c42c9ee31e0d0712bc68ff.png)
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/bd2/983/dcd/bd2983dcde8176d278692e448e4465c3.png)
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/c78/498/a96/c78498a96a20edb12e19e59316a3ac3a.png)
Кстати, по умолчанию на редактирование открывается вот это изображение:
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/413/06a/a8c/41306aa8ca3a2ac2f0efa8d28e1754fc.png)
Собственно, приложение:
Запускаемый jar
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/8fd/8f6/16b/8fd8f616b39980719fced7cb5215be64.png)
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/9ec/25d/2ea/9ec25d2ea912df6438cda2286c726eb2.png)
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/bb7/75d/4bd/bb775d4bdb935107d81a8b75b58a4a73.png)
Естественно, для запуска вам потребуется установленная на вашей ОС jre.
Работать приложение должно на любой ОС, где доступны версии JDK 1.6.20+ (или OpenJDK).
Надеюсь тем, кто часто работает с nine-patch файлами этот редактор поможет облегчить жизнь :)
Естественно, редактор будет и далее понемногу развиваться вместе с библиотекой, если будут появляться дельные предложения по его усовершенствованию.
Кстати о птицах — сама Web Look and Feel библиотека, а также данный редактор написанный на её основе распространяются под лицензией GPLv3 и имеют полностью открытый исходный код.
Так как более новая версия библиотеки, на которой основан данный редактор ещё не выпущена — загрузить исходники на данный момент можно напрямую отсюда:
http://weblookandfeel.com/downloads/ninepatch-sources.zip
А дистрибутив библиотеки без исходников отсюда:
http://weblookandfeel.com/downloads/ninepatch.jar
Также я рад буду выслушать любые комментарии и предложения и…
Спасибо за ваше внимание!
После нескольких комментариев, а также нахождения пары багов я внёс небольшие изменения в библиотеку и редактор, собственно что было изменено:
Загрузить бинарники и исходники можно по старым ссылкам — они уже обновлены:
Запускаемый jar | Исходный код | Чистая библиотека
![image](https://habrastorage.org/getpro/habr/post_images/edf/fcb/ee0/edffcbee0e64af9df5e52b92a7122ab5.png)
Собственно, прошёл уже почти год с того момента и я, опять наткнувшись на ту статью и вспомнив жалобы знакомых на неудобство этого самого «инструмента», решил посмотреть нет ли каких других вариантов и, к моему большому удивлению, я таковых не нашёл. Вероятно потому, что формат сам из себя ничего сложного и специфичного не представляет (при желании nine-patch файлы можно редактировать почти в любом графическом редакторе поддерживающем png) и тем более уже есть готовый инструмент (пусть и не самый удобный).
Тут я и решил лично взяться за дело…
Первые наброски
Итак, за несколько дней на основе своей же разрабатываемой библиотеки мне удалось добиться достаточно неплохих, как мне кажется, результатов — ими бы я и хотел поделиться с вами. Пусть ещё не сглажены все углы, есть некоторые недочёты и, возможно, баги (ну а где их нет), но всё же…
Собственно, само небольшое приложение-редактор выглядит вот так:
![image](https://habrastorage.org/getpro/habr/post_images/410/661/6f7/4106616f78ea5c6a3278cb9b7d3cf911.png)
Несколько преимуществ по сравнению с ранее упомянутой «древней» тулзой:
- Возможность быстрого изменения nine-patch данных простым передвижением/изменением направляющих и областей
- Отображение пиксельной линейки и расстояний между отдельными направляющими на области
- Кастомизируемое превью итогового файла динамически обновляемое при редактировании
- Распознавание nine-patch данных на изображениях не имеющих в имени ".9", а также возможность загрузки простых изображений для быстрой конвертации в nine-patch формат
- Возможность загрузки любых форматов изображений, поддерживаемых в J2SE, помимо png
Немного описания...
Собственно, при работе с этим редактором вам придётся иметь дело с несколькими его частями…
Основной тулбар
![image](https://habrastorage.org/getpro/habr/post_images/a61/7fb/4dc/a617fb4dc0c42c9ee31e0d0712bc68ff.png)
Открытие изображения (можно также просто перетащить любой файл прямо на редактор)
Быстрое сохранение ранее открытого изображения
Сохранение nine-patch изображения в новое место
Диалог предпросмотра изображения (о нём далее)
Отображать ли расстояние между направляющими
Показывать ли линейку на области редактирования
Показывать ли область содержимого
Показывать ли растягиваемые области
![image](https://habrastorage.org/getpro/habr/post_images/bd2/983/dcd/bd2983dcde8176d278692e448e4465c3.png)
- Для zoom'а области можно использовать сочетание Ctrl (или Alt) + Mouse wheel
- Перемещая направляющие можно быстро редактировать области (в допустимых границах)
- Перетаскивать области можно за чёрные линии по краям, либо за области внутри изображения
- Добавлять новые растягиваемые области можно зажимая левую кнопку мыши слева или сверху от изображения
- Стирать растягиваемые области можно зажимая правую кнопку мыши слева или сверху от изображения
- Передвигать область (если появляется скролл) можно зажимая среднюю кнопку мыши (колесо)
![image](https://habrastorage.org/getpro/habr/post_images/c78/498/a96/c78498a96a20edb12e19e59316a3ac3a.png)
- За сайзеры вокруг изображения можно изменить его размер
- На верхнем тулбаре можно настроить отображаемый в изображении текст и иконку
- На нижнем тулбаре можно настроить фон под изображением
Сжимает изображение до минимального размера с учётом содержимого
Кстати, по умолчанию на редактирование открывается вот это изображение:
![image](https://habrastorage.org/getpro/habr/post_images/413/06a/a8c/41306aa8ca3a2ac2f0efa8d28e1754fc.png)
Собственно, приложение:
Запускаемый jar
![image](https://habrastorage.org/getpro/habr/post_images/8fd/8f6/16b/8fd8f616b39980719fced7cb5215be64.png)
![image](https://habrastorage.org/getpro/habr/post_images/9ec/25d/2ea/9ec25d2ea912df6438cda2286c726eb2.png)
![image](https://habrastorage.org/getpro/habr/post_images/bb7/75d/4bd/bb775d4bdb935107d81a8b75b58a4a73.png)
Естественно, для запуска вам потребуется установленная на вашей ОС jre.
Работать приложение должно на любой ОС, где доступны версии JDK 1.6.20+ (или OpenJDK).
В заключении
Надеюсь тем, кто часто работает с nine-patch файлами этот редактор поможет облегчить жизнь :)
Естественно, редактор будет и далее понемногу развиваться вместе с библиотекой, если будут появляться дельные предложения по его усовершенствованию.
Кстати о птицах — сама Web Look and Feel библиотека, а также данный редактор написанный на её основе распространяются под лицензией GPLv3 и имеют полностью открытый исходный код.
Так как более новая версия библиотеки, на которой основан данный редактор ещё не выпущена — загрузить исходники на данный момент можно напрямую отсюда:
http://weblookandfeel.com/downloads/ninepatch-sources.zip
А дистрибутив библиотеки без исходников отсюда:
http://weblookandfeel.com/downloads/ninepatch.jar
Также я рад буду выслушать любые комментарии и предложения и…
Спасибо за ваше внимание!
# Update
После нескольких комментариев, а также нахождения пары багов я внёс небольшие изменения в библиотеку и редактор, собственно что было изменено:
- Объединённый с редактором предпросмотр итогового 9-patch изображения
- Возможность выбора цвета текста в предпросмотре
- Возможность копирования 9-patch данных из одного редактора в другой
- Сохранение всех настроек редактора при закрытии
- Возможность мультистрокового текста в превью ("\n" или ";" разделяют строки)
- Привязка перемещения диалога превью к диалогу редактора
- Добавлен слайдер и кнопки для zoom'а области на нижний тулбар
- В имена файлов автоматически добавляется пометка ".9" при сохранении, если таковой нет
Загрузить бинарники и исходники можно по старым ссылкам — они уже обновлены:
Запускаемый jar | Исходный код | Чистая библиотека