Android: можно ли использовать 9 патчей для рисования кнопки? (см. изображение) - PullRequest
0 голосов
/ 16 июня 2011

Sample button

Если я хочу использовать изображение в качестве фона кнопки, как я могу это сделать?9 патч?Или фиксированное изображение (ldip / mdip / hdip)?

Спасибо!

edit:

спасибо за два ответа, я знаю инструмент draw9patch, но я не знаюзнаете, как определить вертикальную область, чтобы она не разрушала градиент?Спасибо!

Ответы [ 4 ]

3 голосов
/ 16 июня 2011

Для создания пользовательской кнопки вам нужно:

  • A <selector> (список состояний) рисование, которое ссылается на различные рисования для по умолчанию / нажата / сосредоточена / отключена / и т.д. государства.

  • В каждом штате должно быть нарисовано девять патчей (.9.png) в каждой плотности (ldpi / mdpi / hdpi / xhdpi). Обратите внимание, что каркас может увеличиваться или уменьшаться, поэтому не требуется для предоставления девяти заплаток для каждой плотности, но для получения наилучших результатов вы должны сделать это.

Итак, ваша настраиваемая кнопка использует следующую структуру папок:

res/
  drawable/
     mybtn.xml                # <selector> (state list)
  drawable-hdpi/
     mybtn_default.9.png
     mybtn_pressed.9.png
     mybtn_focused.9.png
     mybtn_disabled.9.png
  drawable-mdpi/
     mybtn_default.9.png
     mybtn_pressed.9.png
     mybtn_focused.9.png
     mybtn_disabled.9.png
  drawable-xhdpi/
     ...
3 голосов
/ 16 июня 2011

Я считаю, что 9-патч будет более элегантным решением. Для этого вы можете использовать инструмент «draw9patch» из папки «tools» в вашем Android SDK. Официальная документация по Android дает хороший обзор того, как использовать это: http://developer.android.com/guide/developing/tools/draw9patch.html

0 голосов
/ 16 июня 2011

Я не уверен, будет ли это хорошо выглядеть, но поскольку 9-патч фактически позволяет вам устанавливать несколько растягиваемых областей, вы можете попытаться установить несколько вертикальных областей высотой 1 пиксель и иметь все эти растяжки (в основном,растягиваемая линия каждые 2 пикселя).Это будет выглядеть не так хорошо, как если бы градиент работал идеально, но может быть достаточно хорошим, если вы не слишком сильно растягиваете его.

0 голосов
/ 16 июня 2011

Это определенно должен быть 9-патч.Вам придется тщательно выбирать растягиваемые области, чтобы не нарушать градиенты.Используйте инструмент , чтобы просмотреть, как он будет выглядеть на кнопке.

...