在整個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”字段的判斷