Android开发笔记(九)特别的.9图片

为什么使用.9图片

.9图片的扩展名是png,文件名后常带有“.9”字样,因为它把一个png图片划分为3*3的九宫格来分别处理,所以得名.9图片。.9.png是Android开发中使用的图片格式,其目的是保证在拉伸时图片显示不致失真,主要是避免边框或描边糊掉。
比如说一张分辨率为100*100的图片,其边框厚度为3,然后在手机上作为背景可能会拉伸到300*300,于是边框的厚度按比例放大到了9,这就比原始边框的厚度大了很多,看起来严重失真。如果背景是一个shape图形,其描边节点stroke在width属性上已经设置了具体的像素值如3dp,那么不管该shape图形拉伸到多大,描边厚度始终都是3dp。所以我们希望一张png图片也能实现shape的这种效果,即图片拉伸时不影响边框或描边的厚度。


.9图片的加工

Android的SDK自带了.9图片的加工工具,路径是SDK安装目录下的sdk\tools\draw9patch.bat,运行该程序就会呈现工具界面。
Android开发笔记(九)特别的.9图片_第1张图片


把需要加工的png图片拖到该工具界面上,图片便加载到工具处理画面
Android开发笔记(九)特别的.9图片_第2张图片


左边窗口是图片加工区域,右边窗口是图片预览区域,从上到下依次是纵向拉伸预览、横向拉伸预览、未拉伸预览。
在左边窗口图片四周的马赛克处,单击即出现一个黑点,然后把黑点左右或上下拖动,就会拖出一段黑线,不同方向上的黑线表示不同的处理效果。


.9图片的四个属性

上方的黑线,指的是水平方向的拉伸区域。水平方向拉伸图片时,只有黑线区域内的图像会被拉伸,黑线两边的图像保持原状,这保证了左右两边的边框厚度不变。
Android开发笔记(九)特别的.9图片_第3张图片

左方的黑线,指的是垂直方向的拉伸区域。垂直方向拉伸图片时,只有黑线区域内的图像会被拉伸,黑线两边的图像保持原状,这保证了上下两边的边框厚度不变。
Android开发笔记(九)特别的.9图片_第4张图片

下方的黑线,指的是该图片作为控件背景时,控件内部的文字左右边界只能放在黑线区域内。这里Horizontal Padding的效果就相当于android:paddingLeft与android:paddingRight。
Android开发笔记(九)特别的.9图片_第5张图片

右方的黑线,指的是该图片作为控件背景时,控件内部的文字上下边界只能放在黑线区域内。这里Vertical Padding的效果就相当于android:paddingTop与android:paddingBottom。

Android开发笔记(九)特别的.9图片_第6张图片


在实际开发中,前两个属性使用的比较多,因为很多场景都要求图片拉伸要保真。后两个属性,一般用的不多,但若是不知道,遇到问题还挺麻烦的。博主以前接手别人的项目时,就看到一个页面的文字总是与顶端有段距离,不管我怎么折腾xml和代码,都不管用。后来在高人的指点下,才想起来检查该页面的背景图片,结果用draw9patch.bat打开背景图,一下就发现该图片是不折不扣的.9图片,原来在水平和垂直方向上都设置了padding,这才解决了一大困惑。

你可能感兴趣的:(android开发,Android开发笔记)