Подтвердить что ты не робот

Плохие "патчи" в 9-патч файле

Я пытаюсь использовать инструмент Draw9Patch из Android SDK, но сразу после открытия моего изображения с помощью Draw9Patch он отображает всю мою область изображения как "Плохой патч". Я вручную рисовал линии, которые определяют растяжимые области, однако я не уверен, что это будет работать должным образом. Может ли кто-нибудь объяснить, почему этот конкретный образ не является "хорошим патчем"? Другие ответы Stackoverflow на этот вопрос, похоже, не коррелируют с моей проблемой или я их не понимаю.

Example of Draw9Patch Bad PatchesOriginal Image

4b9b3361

Ответ 1

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

Если вы посмотрите на множество вывесок Android, вы увидите, что они содержат "плохие патчи". Так что просто проверьте их, и если они будут выглядеть хорошо, я бы не стал беспокоиться об этом.

Ответ 2

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

Я сделал небольшой (уродливый) пример, чтобы визуализировать это:
На первом изображении нет плохих патчей (кроме центрального, игнорируйте это).
Это связано с тем, что растянутая область имеет одинаковый цвет, пиксельные полосы - одинаковые: No bad patches shown

Во втором изображении верхняя и нижняя части также отмечены как плохие, потому что градиент начинается там, а горизонтальные полосы пикселей не такие же, как остальные (они содержат немного больше синего/красного), которые МОГУТ вызывать артефакты, если они используются нецелесообразно: Bad patches created

Ответ 3

Я нашел лучший и самый простой ответ, чтобы сделать 9-патч-образ.

Из ЗДЕСЬ вы можете сделать 9-патч-образ для всех разрешений - XHDPI, HDPI, MDPI и LDPI всего за один клик.

Сообщите мне, если у вас есть какие-либо вопросы, и сделайте это, если это было вам полезно.

enter image description here

Ответ 4

Я думаю, что ваша граница, скорее всего, будет проблемой:

От developer.android.com:

"Граница используется для определения растяжимых и статических областей изображения. Вы указываете растяжимый раздел, рисуя одну (или более) черную линию в 1 пикселе в левой и верхней части границы (другие пиксели границы должны быть полностью прозрачными или белыми). Вы можете иметь столько растяжимых секций, сколько хотите: их относительный размер остается таким же, поэтому самые большие разделы всегда остаются самыми большими.

Похоже, у вас есть поля для заполнения, но без пространства между вашим изображением и ящиками. Это означает, что Android, вероятно, интерпретирует их как границы, а не как дополнения (я считаю).

Попробуйте сделать 1-пиксельную ЧЕРНУЮ рамку вокруг вашего изображения. Ящики для заполнения являются необязательными, но должны быть отделены от изображения некоторыми прозрачными пикселями.

В основном, я рекомендую попробовать приблизиться к примерам, которые вы найдете здесь, насколько это возможно.

Надеюсь, что это поможет.

Ответ 5

Я только что опубликовал средний пост о Bad Patches. Он объясняет основную логику для плохих патчей и содержит некоторые советы по их победе. Не стесняйтесь проверить:

9-patch: плохие патчи везде...

плохие патчи

Ответ 6

Вы должны попытаться определить область протяженности одного пикселя на вашей кнопке. У вас нет эффекта градиента, поэтому результат будет таким же. Плохой патч обычно генерируется определением растяжения левой стороны.