# Glide **Repository Path**: HackerX9/Glide ## Basic Information - **Project Name**: Glide - **Description**: 11.7 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2017-11-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Glide 单例模式 ## Glide相比Picasso的优势: 1. 不但可以用context,还可以用Activity,Fragment以及FragmentActivity;图片加载会和Activity/Fragment的生命周期保持一致,比如 Paused状态在暂停加载,在Resumed的时候又自动重新加载 2. 支持Gif图片,前提是该图片真的是Gif图片. 3. 支持自定义动画; 4. 可以加载一个视频的缩略图,thumbnail()方法. 5. 加载同一张图片,Glide占得内存会更小(RGB-565),缺点是质量相对差一些. 6. Glide加载图片的速度相对于Picasso要快一点; 7. Glide加载的大小和ImageView的大小是一致的 ## 缓存 ### 跳过内存缓存 skipMemoryCache(true) ### 磁盘缓存策略. 1. DiskCacheStrategy.ALL 使用DATA和RESOURCE缓存远程数据,仅使用RESOURCE来缓存本地数据。 2. DiskCacheStrategy.NONE 不使用磁盘缓存 3. DiskCacheStrategy.DATA 在资源解码前就将原始数据写入磁盘缓存 4. DiskCacheStrategy.RESOURCE 在资源解码后将数据写入磁盘缓存,即经过缩放等转换后的图片资源。 5. DiskCacheStrategy.AUTOMATIC 根据原始图片数据和资源编码策略来自动选择磁盘缓存策略。 ## Recycle的加载优化 ``` // 只在拖动和静止时加载,自动滑动时不加载。 recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); switch (newState) { case RecyclerView.SCROLL_STATE_DRAGGING: GlideApp.with(context).resumeRequests(); break; case RecyclerView.SCROLL_STATE_SETTLING: GlideApp.with(context).pauseRequests(); break; case RecyclerView.SCROLL_STATE_IDLE: GlideApp.with(context).resumeRequests(); break; } } }); ``` ## 混淆 ``` -keep public class * implements com.bumptech.glide.module.GlideModule -keep public class * extends com.bumptech.glide.AppGlideModule -keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; } # for DexGuard only -keepresourcexmlelements manifest/application/meta-data@value=GlideModule ```