1. 为Android应用添加背景应该使用什么样的图片格式,每个格式的的优势在哪
原创回答:《转载前请注明 from 网络知道-smile乌龟的回答》
先说结论;
1. 大的ViewGroup(Rl,FL ,LL,Cl等)布局背景应该设PNG
2. 小的view(Button,Recyclerview子item)的背景应该用WebP格式
3. 类似16*16的表情图 也应该用WebP,也可考虑PNG
在研究图片之前,首先搞明白三个问题:
像素点:计算机学科中,图片由一个一个像素点组成,像素点有两种ARGB和RGB,A,读作“alpha”,中文“透明度”的含义。
图片格式:JPEG 有损压缩
优点 :压缩过程中损失像素少(为什么要压缩?后文会说)
缺点:有损耗压缩会使原始图片数据质量下降(像素点变少了)
PNG无损压缩
优点:更优化的网络传输显示
(PNG图像在浏览器上采用流式浏览,即使经过交错处理的图像会在完全下载之前提供浏览者一个基本的图像内容,然后再逐渐清晰起来。它允许连续读出和写入图像数据,这个特性很适合于在通信过程中显示和生成图像)
支持透明效果
体积小适合网络传输,请求服务端的图片,节省流量
WebP 谷歌(google)开发的一种旨在加快图片加载速度的图片格式
优点:“在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%”
“WebP
的优势体现在它具有更优的图像数据压缩算法,能带来更小的图片体积,而且拥有肉眼识别无差异的图像质量;同时具备了无损和有损的压缩模式、Alpha
透明以及动画的特性,在向JPEG 和 PNG 上的转化效果都非常优秀、稳定和统一”
WebP应用比较优秀的:腾讯旗下 QQ空间客户端,QQ客户端,微信客户端等
WebP图片常用转换工具:智图,iSparta等
图片压缩:
以Android 为例,任何展示图片的View控件,加载图片的时候,都需要为图片申请内存,通常图片越大,申请的内存越大,Android系统限制了每个App的运行内存,一般为32MB-200M左右,为了优化App性能,必须对图片进行压缩:压缩图片尺寸
通过压缩图片尺寸,解决App运行时申请过多内存,被系统杀死的情况。
总结: JPEG是有损压缩,PNG是无损压缩,
当UI切了一张匹配实际手机屏幕大小的图片时 可以使用JPEG(不需要压缩图片)
当UI给的图片过大,需要程序员手动压缩时,考虑PNG
当UI给的图片过于离谱,不可理喻,导致APK包过大,用户反映耗费流量过多时,考虑使用WebP,而且WebP同PNG,JPEG是可以互转的
(ps:请求自服务端的图片资源,其实也是UI给的)
参考和补充:
图片格式,JPEG PNG WebP from网络
http://isux.tencent.com/introction-of-webp.html
http://www.cnblogs.com/xiangism/p/5311314.html
WebP图片常用转换工具:智图,iSparta 等
官方WebP解析库https://github.com/alexey-pelykh/webp-android-backport
2. android 开发时,为什么常把图片放在assets这个文件夹下而不放在那三个drawable文件夹下呢
一般来说,如果是APP的界面用到的图片,都会放到drawable中的,如果是展示资源的图片(比如说壁纸APP里面大量的壁纸),会放到assets中。