一、WebP
是什麼
WebP
、VectorDrawable
、PNG
、JPG
一起構成了Android
中四種圖片的儲存格式,在學習這篇文章之前,最好能看一下下面的視訊和文章,這樣能對WebP
有一個大概的瞭解:
- 圖片儲存格式的對比 Image Compression For Android Developers
WebP
的概念和優缺點 WebP 探尋之路
下面是上文對於WebP
的概述,今天這篇文章,我們就一起來看如何在App
中使用WebP
。
WebP
是一種支援有失真壓縮和無失真壓縮的圖片檔案格式,派生自影像編碼格式VP8
。根據WebP
比PNG
檔案少了45%
的檔案大小,即使這些PNG
檔案經過其他壓縮工具壓縮之後,WebP
還是可以減少28%
的檔案大小。
二、相容性問題
和VectorDrawable
類似,WebP
也存在相容性的問題:
- 在
Android 4.0
以前,預設是不支援*.webp
,這時候如果圖片源是*.webp
,那麼就需要匯入外部的依賴,將*.webp
轉換成二進位制流,再進行展示。 - 在
Android 4.0+
到Android 4.2.1
之間,只支援完全不透明的*.webp
圖片。 - 在
Android 4.2.1
之後,對於*.webp
已經完全支援,我們完全可以像使用PNG
和JPG
檔案一樣使用它。
三、PNG/JPG
和WebP
格式的互相轉換
目前,對於PNG/JPG
和WebP
格式之間的互相轉換,主要有下面兩種方式:
3.1 使用Google
提供的標準工具
對於官方的轉換工具的介紹,可以檢視下面這篇文件:developers.google.cn/speed/webp/…
下面,我們就來演示一下整個轉換的過程:- 下載轉換的工具 storage.googleapis.com/downloads.w…
- 下載後解壓,進入
/bin
目錄下,執行轉換的命令:
3.2 使用開源的轉換工具
此外,我們也可以使用開源的轉換工具:isparta
3.3 Android Studio
自帶的轉換工具
在Android Studio 2.3
之後,已經內建了對於WebP
格式轉換的功能,我們只需要在圖片資源上點選右鍵,彈出選單的最後一個選項:
四、WebP
常規方案
如果Android
的版本為4.2.1
以上,那麼像使用普通圖片一樣就可以了:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.demo.lizejun.repotransition.WebPActivity">
<ImageView
android:id="@+id/web_p_1"
android:layout_width="match_parent"
android:layout_height="200dp"
android:src="@drawable/ic_bg"/>
</LinearLayout>
複製程式碼
展示效果如下:
五、WebP
相容低版本方案
假如當前的Android
版本不支援webP
,那麼就需要匯入外部依賴:webp-android,關於相容性的問題,大家可以參考下面這篇文章: Android Webp 完全解析 快來縮小apk的大小吧
六、參考文獻
1.Image Compression For Android Developers 2.WebP 探尋之路 3.Android Webp 完全解析 快來縮小apk的大小吧 4.關於Android4.+(4.0~4.2.1)上無損、透明webp影像不顯示問題分析