美文网首页
Glide4.11.0 GlideApp的使用 GlideMod

Glide4.11.0 GlideApp的使用 GlideMod

作者: Mr_Yangy | 来源:发表于2020-05-13 21:48 被阅读0次

    第一步

    module - builde.gradle - dependencies 添加

     api 'com.github.bumptech.glide:glide:4.11.0'
     annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
    

    project - repositories

    buildscript {
        repositories {
            mavenCentral()
        }
    }
    
    allprojects {
        repositories {
            mavenCentral()
        }
    }
    

    第二步

    创建 AppGlideModule

    @GlideModule
    public class GlideConfigModule extends AppGlideModule {
    
        @Override
        public void applyOptions(@NonNull Context context, @NonNull GlideBuilder builder) {
            //修改默认配置,如缓存配置
    //        //磁盘缓存配置(默认缓存大小250M,默认保存在内部存储中)
    //
    //        //设置磁盘缓存保存在外部存储,且指定缓存大小
    //        builder.setDiskCache(new ExternalCacheDiskCacheFactory(context, diskCacheSize);
    //        //设置磁盘缓存保存在自己指定的目录下,且指定缓存大小
    //        builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() {
    //            @Override
    //            public File getCacheDirectory() {
    //                return diskCacheFolder;
    //            }
    //        }, diskCacheSize);
    //
    //
    //        //内存缓存配置(不建议配置,Glide会自动根据手机配置进行分配)
    //
    //        //设置内存缓存大小
    //        builder.setMemoryCache(new LruResourceCache(memoryCacheSize));
    //        //设置Bitmap池大小
    //        builder.setBitmapPool(new LruBitmapPool(bitmapPoolSize));
        }
    
        @Override
        public void registerComponents(@NonNull Context context, @NonNull Glide glide, @NonNull Registry registry) {
            //替换组件,如网络请求组件
        }
    }
    

    第三步

    rebuild一下,如果正常没报错。那么代码中可以引用到GlideApp这个类。没用就make project

    GlideApp.with(fragment)
       .load(myUrl)
       .placeholder(R.drawable.placeholder)
       .fitCenter()
       .into(imageView);
    

    第四步

    创建MyGlideExtension

    @GlideExtension
    public class MyGlideExtension {
        /**
         * 默认占位图
         */
        private static final int ICON_DEFAULT_PLACEHOLDER = R.drawable.vy_icon_placeholder_common;
    
        private MyGlideExtension() {
        } // utility class
    
        @NonNull
        @GlideOption
        public static BaseRequestOptions<?> applyAvatarImage(BaseRequestOptions<?> options) {
            return options
                    .centerCrop()
                    .placeholder(R.drawable.vy_icon_placeholder_avatar)
                    .error(R.drawable.vy_icon_placeholder_avatar)
                    .circleCrop()
                    .format(DecodeFormat.PREFER_RGB_565);
        }
    }
    

    第五步

    工程再次Rebulid一下,没用就make project

    第六步 拓展方法的使用

    // 平时加载图片是这样
        /**
         * 头像加载
         */
              RequestOptions options = new RequestOptions()
                        .centerCrop()
                        .placeholder(R.drawable.vy_icon_placeholder_avatar)
                        .circleCrop()
                        .error(R.drawable.vy_icon_placeholder_avatar)
                        .format(DecodeFormat.PREFER_RGB_565);
              Glide.with(this)
                        .load(url)
                        .apply(options)
                        .into(iv);
        
    
    // 现在是这样
        GlideApp.with(this)
                    .load(url)
                    .applyAvatarImage()
                    .into(iv);
    
    

    总结

    以上的一顿操作其实其实就是为了少写点代码,偷偷懒总是好的嘛。增加点代码复用行,便于团队开发时的代码维护。

    相关文章

      网友评论

          本文标题:Glide4.11.0 GlideApp的使用 GlideMod

          本文链接:https://www.haomeiwen.com/subject/jjtanhtx.html