从图片中来看,当按钮内容不够或太大时,Android会自动缩放整张图片,以保证背景图片能覆盖整个按钮。但这种缩放整张图片的效果可能并不是很好。有时候我们需要的情况是只想缩放图片中某个部分,这样才能保证按钮的视觉效果。
为了实现只缩放图片中某个部分的效果,我们需要借助9Patch图片来实现。9Patch图片是一种特殊的PNG图片,这种图片以.9.png结尾,它在原始的图片四周各添加宽度为1像素的线条,这4条线决定了图片的缩放规则、内容显示规则。
通过9Patch编辑时,左侧和上侧的线共同决定了图片的缩放区域,右侧和下侧的线共同决定了显示的区域,我们通过实例来说明。(9Patch为Android SDK自带的工具,该工具位于Android SDK安装路径下的tools目录下的draw9patch.bat文件)
启动draw9patch.bat之后,通过该工具主菜单上的“File-Open 9-Pacth”菜单项打开一张PNG图片,这里我们以ic-launcher图片为例
首先,上一张未编辑状态的图片,我们可以发现图片周围的灰色区域,那就是我们用来产生上面所说的1像素线条的区域。
我们先来定义图片需要缩放的区域,一般来说图片的内容我们是不想缩放的,想缩放的是图片的透明或者背景部分,上面说过左侧和上侧的线条共同决定了图片的缩放区域,我们通过单击左侧和上侧的灰色区域不放,然后左右或上下移动鼠标,来产生线条,如下图所示
左侧和上侧黑色线条对应的部分就是我们想要缩放的区域
同理,我们通过相同的方发来定义图片需要显示但不缩放的区域,如下图所示
右侧和下侧黑色线条的对应部分就是我们需要显示但不缩放的区域
最后我们将这张图片做为按钮背景,测试一下效果,效果如下
这是使用9Patch编辑过后的按钮背景图片 这是未使用9Patch编辑过的按钮背景图片