a98328b87f4c48d3b44670f231eaa59a.gif

a98328b87f4c48d3b44670f231eaa59a.gif

在Android的设计过程当中,为了适配不一样的手机分辨率,图片大多须要拉伸或者压缩,这样就出现了能够任意调整大小的一种图片格式“.9.png”。这种图片是用于Android开发的一种特殊的图片格式,它的好处在于能够用简单的方式把一张图片中哪些区域能够拉伸,哪些区域不能够拉伸设定好,同时能够把显示内容区域的位置标示清楚。

本文结合一些具体的例子来看下.9.png的具体用法。html

首先看下普通的.png资源与.9.png的资源区别:

a98328b87f4c48d3b44670f231eaa59a.gifandroid

普通的png资源就很少介绍了,能够明显看到.9.png的外围是有一些黑色的线条的,那这些线条是用来作什么的呢?咱们来看下放大的图像:

a98328b87f4c48d3b44670f231eaa59a.gif程序员

放大后能够比较明显的看到上下左右分别有一个像素的黑色线段,这里分别标注了序号。简单来讲,序号1和2标识了能够拉伸的区域,序号3和4标识了内容区域。当设定了按钮实际应用的宽和高以后,横向会拉伸1区域的像素,纵向会拉伸2区域的像素。以下图:

a98328b87f4c48d3b44670f231eaa59a.gif工具

拉伸的含义应该比较容易理解,可是内容区域的标注有什么意义呢?咱们来看下图:

a98328b87f4c48d3b44670f231eaa59a.gifui

这里程序设置的文字垂直居中,水平居左的对齐方式。对齐方式是没有问题的,可是对于这种大圆角同时又有些不规则边框的的图形来讲,错误的标注方式会让排版看起来很混乱。因此咱们须要修正内容区域的线段位置和长度。

a98328b87f4c48d3b44670f231eaa59a.gif

把横向的内容区域缩短到圆角之内,纵向的内容区域控制在输入框的高度之内,这样文字就能够正常显示了。spa

这里还有一种特殊状况,就是自己是.9.png的资源,可是在修改过程当中你但愿这张.9.png不能被拉伸(在作皮肤的状况中有可能会遇到),那怎么办呢?只要把拉伸区域的点点在透明像素的地方就能够了,这样拉伸的时候会拉伸透明部分的像素,而不会拉伸图像自己。以下图:

a98328b87f4c48d3b44670f231eaa59a.gif

你们能够看到拉伸区域的黑点是能够不连续的。设计

说了半天.9.png的用法,那.9.png如何输出呢?有三种方式能够输出.9.png:orm

第一种就是使用PS,可是其缺点是手工增长四周各1个像素,而后其区域颜色值只能是透明色(#00000000)或黑色(#FF000000),混入其余颜色一概没法正常显示,并且没法实时预览,即便你经验丰富,但也很难去考虑到目前Android市场这么多的机型适配;若是混入了其余颜色,而又未发觉,这样再跟程序员来回折腾,时间上也够喝一壶的了。htm

第二种,就是使用谷歌官方的draw9Patch.bat这个工具,这个也有劣势,1.电脑要安装Java环境,2.下载那个几百M的文件,3.draw9Patch这个工具其实很难用,很粗糙,整个的体验也很糟糕。特别是那一根像素,拖着鼠标仔细的描那根像素,哎呀,别提那个憋屈劲儿了。。。图片

第三种,NinePng九图神器App(各大App市场都有的下载),这是一个专门处理点九图的工具App,可以很是简单的用手指拖动就能够直接修改点九图了,并且能够设置文字等信息实时预览效果。

输出的方式是先输出普通的png资源,而后扩大画布大小,上下左右各空出一个像素,再用一个像素的铅笔工具(颜色选择纯黑色),上下左右分别画点就能够了,保存的时候注意把后缀修改成.9.png。

有两点须要特别注意下:

1.最外围的一圈像素必需要么是纯黑色,要么是透明,一点点的半透明的像素都不能够有,好比说99%的黑色或者是1%的投影都不能够有;

2.文件的后缀名必须是.9.png,不能是.png或者是.9.png.png,这样的命名都会致使编译失败。

参考来源:

[2]

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐