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

之前的项目一直是使用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 [email protected]
 */

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文件来加载配置的


    ...
    
      ...
      
    


封装使用

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

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

/**
 * Glide的工具类
 * @author 王诛魔 2017/4/20 下午1:27
 * @e-mail [email protected]
 */

public class ImageLoader {

    /**
     * 加载网络图片
     * @param context Context
     * @param url 图片地址
     * @return DrawableRequestBuilder
     */
    public static DrawableRequestBuilder 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
     */
    public static GifRequestBuilder 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
     */
    public static DrawableRequestBuilder 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
     */
    public static DrawableRequestBuilder 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使用入门,设置全局默认加载图.)