如何从多个图像中绘制可绘制对象?

Posted

技术标签:

【中文标题】如何从多个图像中绘制可绘制对象?【英文标题】:How do I make a drawable from multiple images? 【发布时间】:2011-11-27 22:02:09 【问题描述】:

我有三个 9-patch PNG,它们共同构成按钮的背景(左侧、中间、右侧)。我想将这三个图像组合在一个可绘制对象中,我可以将其指定为 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】:

经过反复试验,我能够以令人满意的方式解决问题。我简单地实现了一个 Layer-List 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 的值是两个按钮侧面图像的宽度(以像素为单位)。

要使用这个drawable,只需像任何其他drawable一样调用它:

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

这完全符合您的预期,中间正常扩展以适应所需的宽度,所有三个图像都扩展以适应所需的高度。我希望其他人可以从中受益!

【讨论】:

如果使用“dp”而不是“px”,效果会更好。使用 px 将导致高密度设备中的大多数左右按钮非常小。

以上是关于如何从多个图像中绘制可绘制对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何从可绘制文件夹上的图像获取路径并设置为图像视图,位图?

有没有办法从大型图像创建 xxhdpi、xhdpi、hdpi、mdpi 和 ldpi 可绘制对象?

如何在 Android Studio 中使用 AsyncTask 从可绘制对象中设置图像

如何从可绘制文件夹中动态获取图像

用于图标的 Mipmap 可绘制对象

ListView 未根据 sqlite 中的名称显示可绘制对象中的正确图像