如何从多张图片创建可绘制对象?

23

我有三个9-patch PNG图片,它们组合在一起构成一个按钮的背景(左边,中间,右边)。我想将这三个图像组合在一起,形成一个可在XML中指定为按钮背景的drawable,类似于:

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个回答

50

经过一些试错,我成功地以令人满意的方式解决了这个问题。我只需按照以下方法实现一个图层列表drawable:

<?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" />

这段代码正如您所期望的一样工作,中间部分按照所需的宽度进行扩展,所有三个图像都会按照所需的高度进行扩展。希望其他人也能从中受益!


3
使用“dp”而不是“px”可以获得更好的效果。在高密度设备上使用px会导致左侧和右侧的按钮非常小。 - seema

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接