9-patch drawable плохо себя ведет, странные артефакты - что тут не так?

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

введите здесь описание изображения

Затем я создал 9-патч, вот так (обратите внимание на маленькую точку сверху и слева):

введите здесь описание изображения

Я думал, что этого достаточно, чтобы справиться с этим, но при добавлении этого 9-патча в Eclipse я получаю странные результаты.

Результат №1

На основе этого XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout6"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/taxibg3"
    android:orientation="vertical" >

    <ImageView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@drawable/login_square" />
</LinearLayout>

Я получаю этот результат:

введите здесь описание изображения

Результат №2

На основе этого XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout6"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/taxibg3"
    android:orientation="vertical" >

    <ImageView
        android:layout_width="300dp"
        android:layout_height="158dp"
        android:background="@drawable/login_square" />

</LinearLayout>

Я получаю этот результат:

введите здесь описание изображения

Я также попытался сделать «9 линий патчей» сверху и оставить их длиннее, но это также дает странные артефакты.

Есть идеи?

-- ИЗМЕНИТЬ--

Я также пробовал с этим 9-патчем (скриншот из 9patch-tool):

введите здесь описание изображения

что дает этот плохой результат (обратите внимание на черные линии):

введите здесь описание изображения

---- РЕДАКТИРОВАТЬ 2 ----

Леонидос сказал мне, что 9-заплатка слишком большая, и что они не могут уменьшиться в размере. Так что я попробовал это, с такими же плохими результатами.

Это 9-й патч (загрузите файл здесь)

введите здесь описание изображения

и вот как это выглядит (обратите внимание на черные линии):

введите здесь описание изображения

--- РЕДАКТИРОВАТЬ 3 ---

Я взглянул на «показать плохие патчи» в пути, и вот что показывает:

введите здесь описание изображения

Но это не имеет большого значения. Если я изменю его, чтобы он выглядел так:

введите здесь описание изображения

У меня до сих пор черные полосы!

О, почему, почему!? знак равно


person Ted    schedule 11.01.2013    source источник


Ответы (3)


Сделайте его как можно меньше. 9 патчей не могут сжиматься, они могут растягиваться. Залейте правую и нижнюю границу черным цветом. Редактируйте границы из 9 патчей с помощью инструмента draw9patch, чтобы предотвратить ошибки. Ваш 9-патч должен выглядеть как этот < /а>.

person Leonidos    schedule 11.01.2013
comment
Хм, сейчас я поиграю с уменьшенной версией, посмотрим, что получится. - person Ted; 11.01.2013
comment
Итак, меньший 9-патч работает, но раздражает то, что Eclipse показывает черные линии, а развертывание на устройстве - нет (по крайней мере, пока) - person Ted; 11.01.2013
comment
Попробуйте обновить SDK и плагин Eclipse до последней версии. Я разрабатываю на Mac и никогда не видел таких артефактов. - person Leonidos; 11.01.2013

Попробуйте сделать 9-полосную разметку со всех 4-х сторон. Также убедитесь, что у вас есть расширение файла .9.png (например, your_cool_pic.9.png)

Вот мой пример введите здесь описание изображения

person Pavel Dudka    schedule 11.01.2013
comment
кажется правильным, и, кроме того, OP говорит, что полупрозрачный, тогда он должен быть уверен, что не использовать какой-либо специальный фильтр, т. Е. умножать, выделять, смягчать, затемнять и т. д. в Photoshop. - person Mohammed Azharuddin Shaikh; 11.01.2013
comment
Эффект создается с помощью фильтра скоса/тиснения в Photoshop, а не умножения и т. д. Но как это может изменить ситуацию? - person Ted; 11.01.2013
comment
Теперь я вижу, что фильтр скоса/тиснения в PS использует режим Shadow=Multiply. Это виновник? И если да, то почему? Кроме того, я сначала пробовал с линиями внизу и справа, но это не помогло. - person Ted; 11.01.2013

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

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

person nmw    schedule 11.01.2013
comment
Он полностью черный или прозрачный. Я создал его с помощью инструмента. Я знаю, что он может быть меньше, но именно так я получил его от моего дизайнера и с чем я сейчас работаю. - person Ted; 11.01.2013
comment
Можете ли вы опубликовать ссылку на реальное изображение с девятью патчами? Сохранение одного из постов не дает девяти патчей. - person nmw; 11.01.2013
comment
Вот одна из версий с более длинными линиями сбоку (без точки): docs.google. com/file/d/0B3wIZ9CS9Kj_bjlJVEZnRlkxbTg/edit - person Ted; 11.01.2013
comment
Похоже, проблема в том, что патч из девяти больше, чем вид, в котором вы его используете (как заявил @Leonidos). Вам нужно сделать его меньше — в идеале как можно меньше. - person nmw; 11.01.2013
comment
Хм, кажется, не работает и с меньшим, пожалуйста, смотрите мое редактирование 2 выше. - person Ted; 11.01.2013