DaVinci一款功能強大的Android網絡庫

AnkeSprouse 8年前發布 | 14K 次閱讀 安卓開發 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,只能在第一次加載時有效(因為圖片加載成功后都會緩存到本地,為了效率考慮,后續顯示該圖片都從緩存中拿取,不再進行大小裁剪)。

     

 本文由用戶 AnkeSprouse 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!