一 .9.PNG的制作(使用draw9patch.bat进行制作)
1 准备一张需要拉升的png图
2 双击打开draw9patch.bat
- 首先安装Java的jdk,并配置环境变量
- 双击打开draw9patch.bat
- draw9patch.bat在sdk的AndroidSDK\tools下
-
从这里点击下载
双击打开后的效果如图(双击打开会打开一个黑框,等一会儿就好)
3. 以直接将图片拖动到该工具之中,或者点击File,然后在导入进来。
先来认识一下界面,并可以看到不管是横纵向拉升都使得图片失真
下面四个小选项分别是
- Show lock:显示不可绘区域
- Show patches:预览这个绘图区中的可延伸宫格(粉红色代表一个可延伸区域)
- Show patches:预览视图中的高亮区域(紫色区域)
- Show bad patches:在宫格区域四周增加一个红色边界,这可能会在图像被延伸时产生人工痕迹。如果你消除所有的坏宫格,延伸视图的视觉一致性将得到维护
4 绘制
从上图我们可以看到,不对图片进行任何修改,图片在某一方向拉伸时都是整体缩放的. 缩放同时,图片圆角也会跟着缩放,导致最终展示效果很差.
4.1绘制内容
在编辑区可以看到要编辑的图片四周多了一像素的内容,这就是我们可以操作的区域了。
绘制小黑点:只需要在四边需要的位置左键单击绘制小黑点,或者拖动绘制小黑线(其实是连续的多个小黑点)
删除小黑点:按shift键,并左键单击或拖动进行删除操作,也可以按住鼠标右键进行擦除。
4.2 小黑点的作用
小黑点在png图最外层有一像素宽的边,除了四个顶角,小黑点可以绘制在png最外边的任一点处,
每个小黑点占据一像素
小黑点绘制之后。其规定一个区域,即小黑点处,垂直于所在边,且一像素宽的区域
4.3 小黑点在四边的作用
顶部:在水平拉伸的时候,保持其他位置不动,只在这个点代表区域做无限的延伸
左边:在竖直拉伸的时候,保持其他位置不动,只在这个点代表区域做无限的延伸
底部:在水平拉伸的时候,指定图片里的内容显示的区域
右边:在竖直拉伸的时候,指定图片里的内容显示的区域
从上图可以看出拉伸后我们希望的箭头区域没有失真,并且而且箭头距离右边距与上边距的距离没有变因此,保证了想要部分不失真
4.4 一个小黑点与多个小黑点(小黑线)的区别
首先没有本质上的区别,下面通过一个例子来理解
假如有一个5px5px大小的图片,横向上需要拉伸至20px
那么就是要横向拉升H=15px
假如横向上画了一个小黑点--则每个小黑点所代表区域拉伸h=15px h=H/1
假如横向上画了三个小黑点--则每个小黑点所代表区域拉伸h=5px h=H/3
因此每条边上的每个小黑点所代表区域拉伸的宽度是一样的*
所以要合理的布置我们的小喝点以至png图能够达到我们想要的方向伸缩
5. 保存和输出
点击左上file- save,保存文件,自动生成一张后缀名为“*.9.png”格式的图片,图片上下左右各增加了1px的黑线。
二、认识.9.png
9patch图片是andriod app开发里一种特殊的图片形式,文件的扩展名为:.9.png
“点九”也是由于Android平台多种分辨率需适配的需求下,发展出来的一种独特的技术。它可以将图片横向和纵向随意进行拉伸,而保留像素精细度、渐变质感和圆角的原大小,实现多分辨率下的完美显示效果,同时减少不必要的图片资源,可谓切图利器。
.9.PNG确实是标准的PNG格式,只是在最外面一圈额外增加1px的边框,这个1px的边框就是用来定义图片中可扩展的和静态不变的区域。特别说明,left和top边框中交叉部分是可拉伸部分,未选中部分是静态区域部分。right和bottom边框中交叉部分则是内容部分
无论是left和top,还是right和bottom都是把图片分成9块 (边角四块是不能缩放的,其他的四块则是允许缩放的),所以叫做9.PNG。
.9.png图片,android系统程序有对其优化的算法。
参考
http://www.jianshu.com/p/3fd048644e3f
http://bbs.itheima.com/thread-251222-1-1.html
http://www.yimui.com/archives/117