Как сделать рисование из нескольких изображений? - PullRequest
17 голосов
/ 29 сентября 2011

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

res/drawable/button_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/button_left_side" />

<nine-patch android:src="@drawable/button_middle" />

<nine-patch android:src="@drawable/button_right_side" />

res/layout/main.xml:

<button android:background="@drawable/button_background" />

Возможно ли это?

1 Ответ

38 голосов
/ 03 октября 2011

После некоторых проб и ошибок я смог решить проблему удовлетворительным образом.Я просто реализовал рисование слоя-списка следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/btn_left" android:left="0px" />
    <item android:drawable="@drawable/btn_middle" 
        android:left="26px" android:right="26px" />
    <item android:drawable="@drawable/btn_right" android:right="0px" />
</layer-list>

Где значения 26px - это ширина двухсторонних изображений в пикселях.

Чтобы использовать это рисование, простоназовите его как любой другой объект для рисования:

<bitmap android:src="@drawable/button_background" />

Это работает точно так, как вы ожидаете, с серединой, расширяющейся как обычно, чтобы соответствовать желаемой ширине, и всеми тремя изображениями, расширяющимися, чтобы соответствовать желаемой высоте.Я надеюсь, что другие могут извлечь выгоду из этого!

...