[Android] Glide 教學

markdown ## 介紹 [https://muyangmin.github.io/glide-docs-cn/](https://muyangmin.github.io/glide-docs-cn/) Glide是一個快速高效的Android圖片加載庫,注重於平滑的滾動。Glide提供了易用的API,高性能、可擴展的圖片解碼管道(decode pipeline),以及自動的資源池技術。

## API * .load(url):載入網址或本地端位置 * .error(iconID):載入錯誤時顯示的圖 * .fallback(image id):URL = null 時顯示的圖 * .placeholder(image id):載入中顯示的圖 * .diskCacheStrategy(DiskCacheStrategy.AUTOMATIC):設定快取模式 * .skipMemoryCache(true):跳過記憶體緩存 * .into(imageView):載入的目標ImageView * .clearMemory():清除記憶體 * .clearDiskCache():清除快取 * .listener()

## 實作 ### 實際用法 ``` java Glide.with(context).load(url).into(imageView); ```
### 監聽 Listener ``` java Glide.with(context).load(url) .into(imageView) .listener(new RequestListener() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { return false; } @Override public boolean onResourceReady(final Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { ((Activity) ctx).runOnUiThread(() -> { holder.progressBar.setVisibility(View.GONE); holder.imgPreview.setVisibility(View.VISIBLE); holder.imgPreview.setImageDrawable(resource); }); return false; } }) .submit(); ```
### 解決TimeOut問題: 更換使用的套件,可更換成OKHttp、Volley * Gradle ``` gradle implementation 'com.squareup.okhttp3:okhttp:3.10.0' implementation 'com.github.bumptech.glide:okhttp3-integration:4.11.0@aar' implementation 'com.android.volley:volley:1.1.1' implementation "com.github.bumptech.glide:volley-integration:4.9.0@aar" annotationProcessor 'androidx.annotation:annotation:1.1.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' ``` * Code ``` @GlideModule public class VolleyGlideModel extends AppGlideModule { public static final String TAG = VolleyGlideModel.class.getSimpleName(); @Override public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) { super.registerComponents(context, glide, registry); Log.d(TAG, "register options"); RequestQueue queue = new RequestQueue(new BasicNetwork(new HurlStack())) { @Override public Request add(Request request) { request.setRetryPolicy(new DefaultRetryPolicy(40 * 1000, 2, 2)); return super.add(request); } }; queue.start(); registry.replace(GlideUrl.class, InputStream.class, new VolleyUrlLoader.Factory(queue)); } } ```

留言

這個網誌中的熱門文章

[ 教程 - 破解 ] IOS 10.2 JB 教學

[教學] AdMob for Android App

[ 教程 - 破解 ]手機 ROOT 教學 適用於HTC、Sony、ASUS、LG