Nine-patch

一个 NinePatchDrawable图片是一个可以拉伸的位图。如果你把这个图片作为一个View的背景,Android会自动根据内容调整这个图片的大小。一个使用NinePatch的实例是Android标准按钮的背景。按钮必须根据安妮上字符的内容长度来调整。一个NinePath的资源是一个标准的Png图片,他包含一个额外的像素点边界。他的后缀名必须是.9.png,并且必须保存到你工程的 res/drawable目录。
这个边界用来定义图片的拉伸和静态区域,你可以通过在边界的左边和上面绘制一个(或多个)1像素宽的线来标识一个拉伸区域(其他的边界像素必须是完全透明的或白色)。你想要多少个拉伸段,你就可以要多少个:他们相关的大小保持一样。所以最大的段保持最大。
你也可以通过在右边和底部绘制一条线来来定义一个可选择drawable段(如对齐的线条)。如果一个视图把一个NinePath设置为他的背景,然后为View设置了文字,NinePath将会自动拉伸自己,这样的话里面的文字只会填充有右边和下边线条标识的区域(如果包含的话)。如果没有对齐线条,Android使用左边和上边的线条来定义这个绘制区域。
要弄清不同边界线条的区别,左边和上边的线条定义了为了拉伸图片可重复的区域(水平或垂直方向上的拉伸区域)。底部和右边的边界线条定义了图片里面的相关区域可以放置View里面的内容的区域。

如下是一个NinePatch文件文件来定义一个按钮

Nine-patch_第1张图片

NinePatch通过左边和上边的像素边定义了拉伸区域,底部和右边的区域定义了绘制的区域。在上面的图片中,灰色的点线标记的区域标记了在拉伸的时候将会重复的区域。下面一张图片里面粉红色的区域定义了View里面的内用将要放置的区域。如果该区域放不下内容,图片将会被拉伸来让他填充满。
 Draw 9-patch工具提供了一个极端便利的方法来创建一个NinePath图片。使用一个所见即所得图形编辑器。它甚至会提供警告,如果你定义的拉伸区域会产生的伪像有风险导致像素重复
XML实例
如下的布局文件中的XML演示了如何把一个NinePatch添加到一对按钮中(NinePatch保存在res/drawable/my_button_background.9.png)


注意,把宽度和高度设置为wrap_content来使按钮里面的Text环绕整个按钮
如下是上面XML文件里面NinePath图片的两个按钮的渲染图。注意宽度和高度是怎么随着Text改变的,已经背景图片是怎么拉伸


你可能感兴趣的:(android应用)