DaVinci一款功能強大的Android網絡庫
DaVinci
基于Volley實現的一款多功能網絡庫, 目前包括了普通圖片和Gif圖片的加載顯示、圖片的二級緩存機制、可以開啟Cookie的http請求等功能。
我們先來一張Glide與DaVinci加載同一張網絡上Gif圖的對比效果
從上面我們可以明顯看出,Glide加載一張Gif圖比DaVinci明顯花更久的時間。并且再看加載后的動畫效果,DaVinci加載后的Gif圖動畫非常流暢,而Glide加載過后的Gif的動畫有些顯示問題。并且用DaVinci加載圖片,你可以定制loading過程的圖片,而Glide無法做到。
我們再來看下實現上述功能,兩者需要的代碼對比。
DaVinci
DaVinci
.with(this)
.getImageLoader()
.load("http://7xlkhg.com2.z0.glb.qiniucdn.com/qbi_cry.gif")
.into(image1);
Glide
Glide
.with(this)
.load("http://7xlkhg.com2.z0.glb.qiniucdn.com/qbi_cry.gif")
.into(image2);
實現方式基本差不多,但你要知道本庫可不單單只有圖片加載功能哦。
1,特色
1,支持Gif圖片,并且做到Gif庫可插拔;
2,實現客戶端Http請求的Cookie機制,只要調用一個enable方法就搞定;
3,支持內存和本地的二級緩存,讓圖片加載更加流暢;
2, 使用方法
用Gradle的方式導入DaVinci庫
repositories{
maven { url "https://jitpack.io" }
}
dependencies {
compile 'com.github.CPPAlien:DaVinci:1.1.4'
}
3, 實現Get和Post請求
DaVinci.with(Context).getHttpRequest()
doGet(String requestUrl, Map<String, Object> params, OnDaVinciRequestListener requestListener)
doPost(String requestUrl, JSONObject postJsonData, OnDaVinciRequestListener requestListener)
doPost(String requestUrl, String postBodyString, OnDaVinciRequestListener requestListener)
public interface OnDaVinciRequestListener {
void onDaVinciRequestSuccess(String response);
void onDaVinciRequestFailed(String reason);
}
</code></pre>
4, 從網絡上加載圖片
DaVinci.with(Context).getImageLoader().load("image url put here").into(imageView);
你也可以在into是使用 into(ImageView imageView, int loadingImage, int errorImage) 來設置loading圖片,和加載錯誤時的圖片
本庫Gif圖片加載采用koral--實現的android-gif-drawable,因為此庫底層使用C庫進行Gif的編解碼,所以效率和顯示效果方面都比Glide優秀。
開啟本庫Gif功能,你需要導入 compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.15' ,導入后,加載的圖片如果為Gif,則會自動以動圖的方式在ImageView里面顯示。如果你沒有導入該android-gif-drawable庫,則Gif圖會被當做普通圖片處理。
5,其他用法
如果你不想每次在使用 DaVinci.with(Context) 時都傳入 Context ,則你可以在所有調用前先 init 一下,以后只要使用 DaVinci.with() 即可。
/**
- @param isEnableDebug if open log print
- @param debugTag log tag
- @param context context
*/
DaVinci.init(boolean isEnableDebug, String debugTag, Context context)
</code></pre>
開啟Cookie機制,Cookie機制開啟后,每次的請求頭中都會帶有 Cookie 頭信息。
DaVinci.with(Context).enableCookie();
設置默認的Content-Type (默認是 application/json ) 和 charset(默認是 utf-8 ,此項可選)
contentType(String contentType, String charset)
加入請求頭
getHttpRequest().headers(Map<String, String> headersMap)
設置請求超時時間
getHttpRequest().timeOut(int timesOutMs)
設置請求的錯誤嘗試次數
getHttpRequest().maxRetries(int maxRetries)
設置加載圖片大小,圖片長寬按比例縮小為設定的maxpix大小
getImageLoader().resize(int maxPix).load(...)
注:設置圖片大小有如下限制:1,對Gif無效;2,只能按比例縮小圖片,無法放大圖片;3,只能在第一次加載時有效(因為圖片加載成功后都會緩存到本地,為了效率考慮,后續顯示該圖片都從緩存中拿取,不再進行大小裁剪)。