2010-04-26 4 views
13

Android NinePatch изображения, как представляется, являются стандартными .png-файлами с дополнительной информацией. Есть ли спецификация для формата в любом месте, так как я хотел бы реализовать это на других платформах?Формат файла Android NinePatch .png?

ответ

11

This это самый простой ссылка я нашел на эту тему.

+0

Переход на принятый ответ, так как эта ссылка дает лучшую информацию о возможностях растягиваемых и дополняющих границ. – Roddy

7

Просто взгляните на изображение 9 patch в средстве просмотра изображений. Это просто граница 1px с черными пикселями, фланкирующими растяжимые области и прозрачные маркировки статических частей.

Если вы увеличите в эту картинку вы можете увидеть черную граница маркировки растяжению площади:

example http://web6.twitpic.com/img/91916457-a53b6866db73378bda07c039151c69aa.4bd6119a-full.png

+0

Я надеялся на документацию, но я думаю, это достаточно хорошо! – Roddy

+0

Я не думаю, что необходима дополнительная документация, так как это обычный PNG с 1 пиксельной рамкой. – stealthcopter

+0

Я не совсем понимаю, как интерпретируется 1-пиксельная граница, особенно с несмежными пиксельными выделениями, а также разница между верхним и нижним полями. – Roddy

6

Я бы настоятельно сказал, что вы не реализуете систему 9patch на других платформах по нескольким причинам.

Я использую инструменты разработчика Android в течение года и широко использовал файлы 9patch.

Это кошмар. PNG не является форматом данных, это формат изображения. Смешивание двух в файле .9.png вызывает проблемы.

9patch-файлы - плохая идея, потому что они объединяют изображения и форматы данных в один файл, который не полностью управляется дизайнером или разработчиком.

Девять файлов патча: вы будете сожалеть о своей причастности в какой-то момент на этапе технического обслуживания, поддержки и обновления.

Возможно, если в будущем будущем поддержка 9patch-файлов добавляется к ряду инструментов качества (например, PS CS4 не понимает файлы 9patch как определенный формат и не соблюдает правила действительных девяти форматов патча .)

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

+0

+1 для прочного мнения - я бы согласился, что инструменты невелики. Однако, учитывая, что мне нужны 9-патч-функции «расширяемых» изображений, какая у меня альтернатива? Переосмыслить колесо можно было бы даже тупо. – Roddy

+1

Я думаю, что концепция 9 патчей является примером действительно отличной идеи, реализованной в наихудшем возможном виде. Другим подходом было бы иметь PNG-файл (отраслевой стандарт) и формат XML, который включал бы 4 измерения. Stretch X, Stretch Y, Pad X и Pad Y. Затем используйте собственный парсер (XML вместо PNG), а затем манипулируйте PNG, чтобы растянуть его. Таким образом, ваш PNG по-прежнему можно использовать для других вещей (и работает в Photoshop), а ваш рынок макетов находится в XML, где программисты могут легко его использовать. –

+2

Я совершенно не согласен с Кори здесь. Я использовал 9-патча PNG в Photoshop в течение 10 месяцев, и они работают как обаяние. на самом деле, мой интерфейс выглядит хрустящим с этой техникой, это здорово! –

1

Современные браузеры поддерживают CSS 9-путь фоны на основе: http://www.css3.info/preview/border-image/

+0

хорошая ссылка, текст введения мотивирует 9 параметров; поэтому 9 patch - это явное определение 9 интересующих областей для размещения растрового изображения в координатах холста? – Vass

0

Взял меня некоторое время, чтобы понять, что расширение файла 9 патч должен быть xxxx.9 и не xxx.9.png

+0

, в этом случае он просто игнорирует данные 9 патчей – MrJre

1

Я нашел эту ссылку очень полезной: link to blog post. Он использует несколько примеров для разных границ, определенных при создании 9 патчей. Он показывает, как дополнительная информация используется для масштабирования размеров изображений (x, y).

В конце есть замечательный комментарий Ричарда Л., в котором говорится, что вы можете добавить регионы для защиты от масштабирования изображения, включив перерывы в границах; например. а не масштабирование разделов на изображении.