Android中使用到的四种类型的PNG图片
在整个android中可以存在四种PNG后缀的image文件
1.标准PNG: (ex.应用默认的icon.png)
符合PNG-8标准的PNG图片, 只能做图片, 不能放缩.
2.Android打包处理后的9.png: (ex.应用APK中打包的9.PNG)
为了保证占用空间小,android在资源中删除了标准PNG的大量冗余信息,去除了周边的空白像素,减少了IDAT数据段,
在打包成APK的时候,里面的文件就是不可放缩的9.png, 虽然后缀名还是9.png,但是已经没有放缩功能,并且把边界多的两个像素也去除了.
3.Android不可放缩的9.png:
在drawable中可以找到9.png图片,但是使用Draw 9-patch软件打开会报错,但是可以在drawable中使用,
这些文件只是删除了冗余信息,并且加上了边界的两个像素点,
并没有添加可放缩的flag到文件中,这些文件只能作为打包后的9.PNG使用(但是size会小一些),不能放缩和做背景.
4.Android可放缩的9.png:
可以使用Draw 9-patch软件打开,不会报错,在drawable中使用,android会根据设置的黑色像素点来进行放缩.
有添加可缩放的flag到文件中,可以做为View的背景或者普通的图片显示.在做背景时,可以进行拉伸和放缩.
在做非背景时,比如像ImageView这类设置src图片则不随view变化,按其自身大小显示部分或全部.
另: 对9.png后缀文件的解析逻辑及可放缩chunk检查的逻辑 Images.cpp
对9.PNG判断函数入口: Drawable.java中对”nine-patch”字段的判断
本文原创,请勿用于商业用途。
转载请注明出处:http://www.cnblogs.com/mobile-veterans