在整个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”字段的判断

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. 读取android手机流量信息
  4. Android屏幕分辨率正确获取及PX,DPI,DP,SP等的对应关系
  5. android 使用html5作布局文件: webview跟javascript交互
  6. Android(安卓)多媒体扫描过程(Android(安卓)Media Scanner Proces
  7. android“设置”里的版本号
  8. Android开发环境搭建
  9. Android(安卓)Resource介绍和使用

随机推荐

  1. MySQL 用 limit 为什么会影响性能
  2. 一次MySQL启动导致的事故实战记录
  3. MySQL中几种插入和批量语句实例详解
  4. MySQL 如何限制一张表的记录数
  5. MySQL into_Mysql中replace与replace int
  6. MYSQL 的10大经典优化案例场景实战
  7. MySQL 数据库定时备份的几种方式(全面)
  8. Mysql 字符集不一致导致连表异常的解决
  9. 五分钟带你搞懂MySQL索引下推
  10. 一篇文章读懂什么是MySQL索引下推(ICP)