NinePatch Image就是平时说的9.png格式图片android
优势:能够定义可扩展区域,自动处理png图片扩展的问题,能够很好的适应Android设备那千奇百怪的屏幕分辨率要求。ide
限制,只适合纯色或者简单线框的图形,若是涉及的图像比较复杂或者颜色层次较多,是难以得到比较良好的扩展效果的。工具
主要特色:只是在普通png图像最外面增长了一圈1px的边框,边框就是用来定义图片中可扩展的和静态的区域。对于大多数状况来讲,9.png能够分割为9个区域,这大概也是9.png这个名称的由来:spa
如上图所示,上边和左边的黑色边框将图片分割成9个区域,其中xml
1,3,7,9是静态区域,也就是不会被扩展的区域。图片
2,8是水平扩展区域ci
4,6是竖直扩展区域扩展
5是重合部分,也就是水平竖直都可以扩展的区域im
固然,虽然叫9.png图片,可是并不仅限于分割成9个区域,上边和左边能够定义任何数量的线框,从而将图片分割成多个区域。margin
另外,右边和底部边框能够定义内容区域,不过这个内容区域与是否扩展没有联系,更多只是像给内容增长一个padding而已:所以这部分是可选的。
draw9patch是android SDK自带的编辑9.png图片的小工具。使用比较简单,只有几个选项:
1.show lock。显示不可绘区域
2.show patches。显示分割区域
3.show content。显示内容区域,即预览图中的紫色区域
4.show/hide bad patches。显示有问题区域
惟一值得一提的是bad patches功能,能够预先标示出在扩展中会出现失真的区域:
放大看看:
能够看出,因为水平扩展区域覆盖了左上角的圆角,扩展过程当中会产生失真,因此用红色方框标示出来了,这个功能算是比较有用的。
9.png除了能够定义扩展区域外,其余与普通png没有区别,因此最好是按照hdpi,xhdpi,xxdpi文件夹放置。因此若是只是单纯的圆角矩形之类的图片,最好仍是直接使用xml文件定义drawable比较方便。
若是9.png图片过大,可能出现不一样区域相互覆盖的问题。因此9.png图片只须要保留那些主要轮廓,尽可能作得小一些。
若是右边和下边的内容区域没有定义,某些时候就会出现这种问题,因此最好仍是将右边和下边的内容区域所有都定义出来。
Android分享 Q群:315658668