什么是9.png: 可能做过任务栏美化的同学都会知道,我靠,framework-res.apk/res/drawable-hdpi 目录下有非常非常多的XXXXXX.9.png图片。 千万不要以为这个9只是png格式图片的命名区分,其实他是一种特殊的格式,在png图片的基础上动了些手脚,而且这种手脚你会 看不见摸不着(详情见下面具体内容)。 9.png格式的图片是安卓平台上新创的一种被拉伸却不失真的玩意(挺高级的吧),也许有 的同学在做美化的时候很喜欢一个图片素材,重命名替换了drawable-hdpi下的素材,但是运行系统后发现,怎么被拉伸得不像样子 了,哈哈,这就是9.png图片不能轻易碰的神奇所在,不过不要紧,下面看完你就会了,安卓美化大师就是你了。 首先我们还是得介绍一下,9.png图片他的具体不同之处,它的四周与普通的png图片相比多了一个像素位的白色区域,该区域 只有在图片被还原和制造的时候才能看到,当打包后无法看见,并且图片的总像素会缩小2个像素,比如23x23像素的9.png图片被 打包后会变成21x21像素。所以我们在制作的时候要注意掌握尺寸。 当我们制作出9.png图片的时候你还有惊奇的发现一个几KB或者几十KB的图片,变得非常的小,一般只有几百个字节那么大, 系统加载起来当然会更加的流畅咯。 |
android tools下面有一个draw9patch.bat ,可以将一个png图片变成一个由9个补丁(patch)组成的png。并命名为9.png
内部原理: android会自动将.9.png的文件当做 9 patch文件来处理,9.png的文件就是一个png文件,其特殊之处在于周围一圈的框框由 0x00000000或者 0xffffffff 组成,即有一圈黑白框,黑框所框住的地方是会被resize的,另外的4个角不会被resize, 而上下左右的四块,会被单向resize。这对于一些按钮的png十分有好处,可以保持四周的圆角尺寸不变,而中心放大。
draw9patch.bat的使用方法是,打开一个普通的png图,然后将四周的中心用鼠标点上。再保存。在右边可以看到缩放后的效果。
{注意,对于从别人apk中破解9.png的时候,android编译器已经将9.png的边框去掉了,所以还要再使用draw9patch.bat自己整一下。}
然后在android eclipse中,将9.png的图片放到drawable中,并可参考如下的方式设计一个用xml写的自定义按钮。
xmlns:android="http://schemas.android.com/apk/res/android">
android:state_enabled="false" android:drawable="@drawable/btn_red" />
android:state_pressed="true" android:state_enabled="true"android:drawable="@drawable/btn_orange" />
android:state_focused="true"android:state_enabled="true" android:drawable="@drawable/btn_orange" />
android:state_enabled="true" android:drawable="@drawable/btn_black" /> >