分享一下自己做的一個圖片載入庫XImageLoader
這是一個我自己做的一個Android的自定義圖片載入庫,主要參考了網上一些大神寫過的一些圖片載入庫,再結合自己的一些想法理解去做了一個較為完整的圖片載入庫。當然程式碼中也會存在一些不足的情況,例如程式碼架構方面不是非常的完善。希望大家提出意見,一起去改進!
注意:這是一個用於學習圖片載入與快取的庫,不推薦使用在實際專案之中!
Github地址:https://github.com/XuDeveloper/XImageLoader
如果你想改進這個圖片載入庫,歡迎在GitHub上fork這個專案然後pull request給我!如果你喜歡它,請給這個專案一個star或者關注我的GitHub!謝謝你們的支援!
匯入
Android Studio
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.XuDeveloper:XImageLoader:v1.0'
}
Eclipse
可以複製原始碼到你的專案中!
使用
預設用法:
// 非同步介面呼叫
XImageLoader.build(context).imageview(ImageView).load(imageUrl);
// 載入本地檔案,你需要使用這樣的格式:"file:///address"
XImageLoader.build(context).imageview(ImageView).load("file:///address");
或者:
// 同步介面呼叫(需要執行在一條新執行緒中)
Bitmap bitmap = XImageLoader.build(context).imageview(ImageView).getBitmap(imageUrl);
你可以選擇是否快取或者自定義(使用XImageLoaderConfig):
XImageLoader.build(context).imageview(isMemoryCache, isDiskCache, ImageView).load(imageUrl);
XImageLoader.build(context).imageview(isDoubleCache, ImageView).load(imageUrl);
// 具體配置
XImageLoaderConfig config = new XImageLoaderConfig();
config.setCache(new DoubleCache(context));
config.setLoader(new OkhttpImageLoader());
config.setLoadingResId(R.drawable.image_loading);
config.setFailResId(R.drawable.image_fail);
XImageLoader.build(context).imageview(config, ImageView).load(imageUrl);
你需要AndroidManifest.xml中設定許可權:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
如果你使用的是Android 6.0以上的裝置,你需要動態設定許可權:
XImageLoader.verifyStoragePermissions(activity);
程式碼架構設計:
採用流式程式設計寫法,將載入一張圖片分為以下幾步:
1.初始化一些基本設定(XImageLoaderConfig ),如是否加入快取,設定載入時顯示的圖片資源以及載入失敗時顯示的圖片資源還有圖片載入器ImageLoader;(如果不設定下面會自動設定)
2.設定需要載入的ImageView;
3.設定需要載入的圖片路徑,可以是網路上的圖片,也可以是手機本地圖片,如果前面沒設定ImageLoader,在這裡就可以根據路徑來動態選擇載入哪個特定的ImageLoader;
載入圖片有兩種方法,一種是同步方法獲取圖片Bitmap,另一種是線上程池中非同步載入圖片。
載入圖片的優化方法:
1.加入快取機制,包括LruCache以及DiskLruCache;
2.載入時先預讀取圖片,根據尺寸計算inSampleSize,對圖片進行適當壓縮,防止OOM;
3.採用執行緒池載入。
需要進一步優化的地方:
讀取需要載入的ImageView尺寸時用到了反射的方法,影響了一定的效率;
相關文章
- 如何在Github提交圖片,做一個自己的圖片倉庫Github
- 圖片預載入,圖片懶載入,和jsonp中的一個疑問JSON
- 解耦圖片載入庫解耦
- 如何實現一個圖片載入框架框架
- 分享自己做的一個JAVA RPC 框架 longioJavaRPC框架
- 一個圖片偶爾載入不出來的事故
- 分享一下自己做影片 600 天之後的一些感想
- js:原生多張圖片延遲載入(圖片自己找)JS
- 專案分享六:圖片的延遲載入
- 分享一下自己做視訊 600 天之後的一些感想
- js圖片預載入程式碼片段分享JS
- 不一樣的圖片載入方式
- 圖片預載入和懶載入(附上一個小demo瀑布流)
- 分享一個圖片處理類
- Vue實現一個圖片懶載入外掛Vue
- javascript如何判斷一個圖片是否載入完成JavaScript
- Glide 一個專注於平滑滾動的圖片載入和快取庫IDE快取
- 圖片懶載入外掛echo.js分享JS
- SDWebImage載入圖片的URL是同一個(如何處理)Web
- FaceBook推出的Android圖片載入庫FrescoAndroid
- 從零開始打造一個iOS圖片載入框架(一)iOS框架
- 搭建了一個圖片庫
- 分享一下自己寫的PHP函式PHP函式
- 如何判斷一個img圖片是否載入完畢
- 提供一個Glide靈活載入圓角圖片的方法IDE
- Flutter 圖片載入Flutter
- 圖片懶載入
- 預載入圖片
- 圖片載入事件事件
- 載入圖片方式
- 載入圖片的問題
- 圖片預載入和懶載入
- 從零開始打造一個iOS圖片載入框架(三)iOS框架
- 從零開始打造一個iOS圖片載入框架(二)iOS框架
- 從零開始打造一個iOS圖片載入框架(四)iOS框架
- 分享12個高質量的PPT圖片素材下載站
- 分享一個圖片驗證碼功能的實現
- 分享一個看起來很酷的圖片上傳元件元件