摘要:
Android Studio 2.3 正式版發(fā)布了,該版本包含一些新特性,包括
- 對 WebP 支持的更新镣煮;
- ConstraintLayout 庫支持更新和布局編輯器的部件面板割以。
- 提供一個新的 App Link 助手可以幫助你在應用中構建 URI 的統(tǒng)一視圖。
- 新的運行按鈕提供更直觀和可靠的立即運行體驗并鸵。
- 最后是 Android 模擬器的測試,支持文本的復制和粘貼扔涧。
這次就說說 Android Studio 對 webP的支持
關于 webP
什么是 WebP园担?
WebP(發(fā)音 weppy,項目主頁)枯夜,是一種支持有損壓縮和無損壓縮的圖片文件格式弯汰,派生自圖像編碼格式 VP8。根據(jù) Google 的測試湖雹,無損壓縮后的 WebP 比 PNG 文件少了 45% 的文件大小咏闪,即使這些 PNG 文件經過其他壓縮工具壓縮之后,WebP 還是可以減少 28% 的文件大小摔吏。
2010 年發(fā)布的 WebP 已經不算是新鮮事物了鸽嫂,在 Google 的明星產品如 Youtube、Gmail征讲、Google Play 中都可以看到 WebP 的身影据某,而 Chrome 網(wǎng)上商店甚至已完全使用了 WebP。國外公司如 Facebook诗箍、ebay 和國內公司如騰訊癣籽、淘寶、美團等也早已嘗鮮。目前 WebP 也在我廠很多的項目中得到應用筷狼,如騰訊新聞客戶端瓶籽、騰訊網(wǎng)、QQ空間等埂材,同時也有一些針對 WebP 的圖片格式轉換工具塑顺,如 智圖,iSparta 等楞遏。
WebP 的優(yōu)勢
WebP 在各大互聯(lián)網(wǎng)公司已經使用得很多了茬暇,國外的有 Google(自家的東西肯定要用啦,Chrome Store 甚至已全站使用 WebP)寡喝、Facebook 和 ebay糙俗,國內的有淘寶、騰訊和美團等预鬓。
優(yōu)勢主要有以下:
- PNG 轉 WebP 的壓縮率要高于 PNG 原圖壓縮率巧骚,同樣支持有損與無損壓縮
- 轉換后的 WebP 支持 Alpha 透明和 24-bit 顏色數(shù),不存在 PNG8 色彩不夠豐富和在瀏覽器中可能會出現(xiàn)毛邊的問題
- WebP為網(wǎng)絡圖片提供了無損和有損壓縮能力格二,同時在有損條件下支持透明通道劈彪。據(jù)官方實驗顯示:無損WebP相比PNG減少26%大小顶猜;有損WebP在相同的SSIM(Structural Similarity Index沧奴,結構相似性)下相比JPEG減少25%~34%的大小长窄;有損WebP也支持透明通道滔吠,大小通常約為對應PNG的1/3。(同時肉眼幾乎無法看出差異)
更進一步了解可以查閱下面的相關博客
相關博客:
WebP 探尋之路
WebP原理和Android支持現(xiàn)狀介紹
Android Studio 2.3 對 WebP 支持
Android Studio 2.3使用有一段時間了挠日,在工作之余也嘗試了一把將目前項目中的圖片利用 Android Studio 提供的工具將項目中的 png 圖片轉化成 webp疮绷,最終項目瘦身成功。最初的10M 左右減到了 8點多 M嚣潜,成果顯著冬骚。建議項目比較龐大的可以去替換下。
如何將 png 轉化成 webp?
在之前常用的webp轉換工具有:XnConvet懂算,智圖只冻,ISparta。
而現(xiàn)在我們可以
Google在新版本的Android studio 2.3中加入了對圖片壓縮的工具计技,可以直接將PNG,BMP,JPG和靜態(tài)的Gif圖片文件轉成Webp格式喜德,占用更少的空間資源,可以極大的縮小apk的大小酸役。
在新版本如何使用:
1.選擇你要修改格式的圖片住诸,然后右擊,在列表的最下端有個Convert to WebP...按鈕涣澡,如下圖所示:
2.點擊后彈出如下圖內容贱呐,有需要更改設置可以進行更改,沒有可直接點擊ok入桂。
3.最后就出現(xiàn)如下圖所示內容:
通過拖動Quality那個軸改吧圖片的壓縮質量,
中間的Difference表示原圖和壓縮后的圖的一個差異抗愁。壓縮的越多馁蒂,difference顯示的越清楚。
同時也支持將webp轉成png蜘腌。
APP瘦身
- 趕緊把項目中的圖片按照默認方式去轉換下
- 對比下前后 APP 的大小
前后減少了大約1M 多。
其實我們的項目本身就已經很小了撮珠,才十左右沮脖,這點我們還是一直會去注意的,一直會做重構和瘦身芯急,保持 APP 的苗條身材勺届。
目前這個轉化我是按照系統(tǒng)默認的直接將 png 轉成 webp。其實針對很多圖片可以更大壓縮值的娶耍,比如Splash的大圖片免姿。這樣也可以加快 app 的啟動速度。
嗯榕酒。我又把 webp 換成 png了胚膊,蛋疼的兼容性問題。
問題原因
從官方文檔中可以看到在Android4.0到Android4.2.1之間的版本不支持無損壓縮和透明格式的WebP圖片的編解碼奈应。所以如果從要解析的WebP圖片中包含無損壓縮或透明格式澜掩,且當前是Android4.0到Android4.2.1之間的系統(tǒng),則BitmapFactory解碼時就會出錯杖挣。此外肩榕,個別Android機型雖然是Android4.0及以上的版本,但是在原生ROM基礎上去掉了WebP功能惩妇。
分析
Android官方文檔中說明了在Android4.0的機器上開始支持了webp圖片格式株汉,不過對于無損、透明的圖片(設置了setAlpha)歌殃,圖像進行編碼時會出錯乔妈,導致圖像無法顯示。該問題在Android 4.2.1+解決了氓皱,詳見官方文檔:http://developer.android.com/intl/zh-cn/guide/appendix/media-formats.html路召。
解決方案
雖然在4.0以上都支持了勃刨,但是4.0-4.2版本的不支持
Google 爹這點沒有做的很好,批評下股淡。
既然不支持Alpha身隐,那么不要Alpha肯定是可以的。
然而在我們項目中幾乎所有的圖片都是帶有Alpha的唯灵。
這個時候我用命令把 png轉webp贾铝。
命令:
cwebp abc.png -noalpha -o abc.web
不要Alpha,效果是這樣的:
這怎么玩埠帕。垢揩。。
然后還有另外一種方式敛瓷,就是兼容低版本叁巨,需要使用 so 包,看了下挺麻煩的呐籽。我決定俘种,等我們項目最低支持到4.2的時候再換成 webp。
嗯绝淡,
看了下4.0-4.2的用戶還有幾百個宙刘,堅持就好!