美文网首页
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使用入门,设置全局默认加载图.

    之前的项目一直是使用ImageLoader,通过在Application初始化配置就可以搞定基本所有的东西.Gli...

  • Glide加载圆形图片第一次只显示默认图片

    Glide加载圆形图,又设置了默认图,很多时候第一次加载的时候只显示默认图。下面的方案可以解决。 Glide.wi...

  • Glide

    ImageView的scaleType设置不当,导致使用Glide时出现OOM Glide图片加载库的使用

  • glide4.9.0源码解析

    引用 使用 源码分析 主要方法glide绑定当前activity或者fragment生命周期,加载图片资源,设置图...

  • Glide加载图片格式设置

    问题:使用Glide加载图片时设置centerCrop()或centerInside()等图片加载格式失效。解决方...

  • Glide解析学习记录

    Glide版本是3.7.0,默认加载图片格式RGB_565,默认使用的是HttpURLConnection Wit...

  • Glade 图片加载库的使用

    1、导入glide 2、使用glide 增加网络权限: 普通加载网络图片-占位图 和 加载错误图 缩略图:首先显示...

  • Glide扩展的3种使用方式

    下文将介绍Glide扩展的3种使用方式,希望对你有所帮助: 1、利用Glide清理缓存2、Glide默认配置设置 ...

  • Glide

    Glide常用: ////原生加载,图片过大,OOM异常 使用Glide加载 Glide 1.简介 Glide,一...

  • Glide

    Glide常用: //原生加载,图片过大,OOM异常 使用Glide加载 Glide 1.简介 Glide,一个被...

网友评论

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

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