美文网首页
Glide使用入门,设置全局默认加载图.

Glide使用入门,设置全局默认加载图.

作者: 王诛魔Phy | 来源:发表于2017-04-21 13:47 被阅读671次

    之前的项目一直是使用ImageLoader,通过在Application初始化配置就可以搞定基本所有的东西.
    Glide好像和ImageLoader不太一样,使用整理如下:

    导包:

    compile 'com.github.bumptech.glide:glide:3.7.0'
    compile 'com.android.support:support-v4:25.3.1'

    配置硬盘缓存位置和内容缓存
    就是通过GlideModule来实现的,代码如下;

    步骤一

    /**
     * @author 王诛魔 2017/4/20 上午9:24
     * @e-mail phyooos@163.com
     */
    
    public class GlideLoaderModule implements GlideModule {
    
        @Override
        public void applyOptions(Context context, GlideBuilder builder) {
            int maxMemory = (int) Runtime.getRuntime().maxMemory();
            int memoryCacheSize = maxMemory / 8;
            File cacheDir = new File(Constants.IMAGE_PATH);
            if(!cacheDir.exists()){
                cacheDir.mkdirs();
            }
            int diskCacheSize = 1024 * 1024 * 512;
            builder.setMemoryCache(new LruResourceCache(memoryCacheSize));
            builder.setDiskCache(new DiskLruCacheFactory(cacheDir.getPath(), "Images", diskCacheSize));
            builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);
    
    
        }
    
        @Override
        public void registerComponents(Context context, Glide glide) {
    
        }
    }
    
    
    

    上面的代码就是设置,在Constants.IMAGE_PATH的位置有一个文件夹,大小就是int diskCacheSize = 1024 * 1024 * 512;

    步骤二
    需要在AndroidManifest.xml文件中配置meta-data
    文档说Glide是通过扫描AndroidManifest文件来加载配置的

    <manifest>
        ...
        <application>
          ...
          <meta-data
                android:name="com.phyooos.app.utils.GlideLoaderModule"
                android:value="GlideModule"/>
        </application>
    </manifest>
    
    

    封装使用

    但是使用的时候就发现,这个默认图和错误图,每一次加载图片的时候都要写上,十分不方便

    再者,我怕我又心血来潮换加载图片的框架,所以就加上了一个中间层

    /**
     * Glide的工具类
     * @author 王诛魔 2017/4/20 下午1:27
     * @e-mail phyooos@163.com
     */
    
    public class ImageLoader {
    
        /**
         * 加载网络图片
         * @param context Context
         * @param url 图片地址
         * @return DrawableRequestBuilder<String>
         */
        public static DrawableRequestBuilder<String> LoaderImg(@NonNull Context context,@NonNull String url){
            return Glide.with(context)
                    .load(url)
                    .crossFade()  //淡入淡出
                    .error(R.drawable.default_images_loading)    //错误加载
                    .placeholder(R.drawable.default_images_loading);   //加载图
        }
    
    
        /**
         * 加载GIF
         * @param context Context
         * @param url 图片地址
         * @return DrawableRequestBuilder<String>
         */
        public static GifRequestBuilder<String> LoaderGif(@NonNull Context context, @NonNull String url){
    
            return Glide.with(context)
                    .load(url)
                    .asGif()
                    .crossFade()  //淡入淡出
                    .error(R.drawable.default_images_loading)    //错误加载
                    .placeholder(R.drawable.default_images_loading);   //加载图
        }
    
    
        /**
         * 加载本地File图片
         * @param context Context
         * @param url 图片地址
         * @return DrawableRequestBuilder<File>
         */
        public static DrawableRequestBuilder<File> LoaderSD(@NonNull Context context,@NonNull String url){
            File file = new File(url);
            return Glide.with(context)
                    .load(file)
                    .crossFade()  //淡入淡出
                    .diskCacheStrategy(DiskCacheStrategy.NONE)
                    .error(R.drawable.default_images_loading)    //错误加载
                    .placeholder(R.drawable.default_images_loading);   //加载图
        }
    
    
        /**
         * 加载本地Res图片
         * @param context Context
         * @param res DrawableRes
         * @return DrawableRequestBuilder<Integer>
         */
        public static DrawableRequestBuilder<Integer> LoaderRes(@NonNull Context context,@DrawableRes int res){
            return Glide.with(context)
                    .load(res)
                    .crossFade()  //淡入淡出
                    .error(R.drawable.default_images_loading)    //错误加载
                    .placeholder(R.drawable.default_images_loading);   //加载图
        }
    
    
        /**
         * 清空内存缓存
         * @param context Context
         */
        public static void clearMemory(@NonNull Context context){
            Glide.get(context).clearMemory();
        }
    
    
        /**
         * 清空内存缓存
         * @param context Context
         */
        public static void clearDiskCache(@NonNull Context context){
            Glide.get(context).clearDiskCache();
        }
        
    
    }
    

    只有几个常用的操作,还不是很完善,后面使用的过程中再去完善它

    以上入门,至于后续学习推荐
    MrFu Blog傅圆的博客,系列文章Glide - 系列综述

    END

    相关文章

      网友评论

          本文标题:Glide使用入门,设置全局默认加载图.

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