android glide 图片加载框架使用

Glide 是一个 Android 上的图片加载和缓存库,其目的是实现平滑的图片列表滚动效果。

https://github.com/bumptech/glide

wiki:https://github.com/bumptech/glide/wiki

最近项目引入,glide图片加载,由于对于该图片加载的使用并不是很了解,因此,详细看了下wiki并且分享给需要的同学。

1、基本的加载方法  
Glide.with(xxx.getContext())
                        .load(file)  //可以从本地图片资源读取,也可以从Url去加载。
                        .crossFade()//显示渐变效果
                        .override(width, hight)//可以为图片手动设置宽度高度,
                        // 当然你想加载原图,使用override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL)
                        .into(xxx); 



2、通过URL直接在后台下载图片,该方法请在子线程里执行。

public File downloadOriginalImage(String url) {
    if (TextUtils.isEmpty(url)) {
        return null;
    }
    FutureTarget<File> future = Glide.with(getActivity())
            .load(url)
            .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);
    try {
        //下载原图超时 25秒
        return future.get(25L, TimeUnit.SECONDS);

    } catch (InterruptedException e) {
        e.printStackTrace();
    } catch (ExecutionException e) {
        e.printStackTrace();
    } catch (TimeoutException e) {
        e.printStackTrace();
    }
    return null;
}



3、glide全局配置

配置比较简单,只需要新增一个类并且实现了 GlideModule的接口

然后再AndroidManifest.xml 配置如下参数即可

<meta-data
    android:name="xxx.FlyGlideModule" //请填写具体的class完整路径
    android:value="GlideModule" />

public class FlyGlideModule implements GlideModule {
    public static final int yourSizeInBytes_disk=1024*1024*50;//默认50M本地缓存
    public static final int yourSizeInBytes_memory=1024*1024*15;//默认15M内存
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() {
            @Override public File getCacheDirectory() {
                return new File(FlyEnvironment.IMAGE_CACHE);
            }
        }, yourSizeInBytes_disk));

        builder.setMemoryCache(new LruResourceCache(yourSizeInBytes_memory));
    }



    @Override
    public void registerComponents(Context context, Glide glide) {

    }
}

4、图片加载暂停,重启(适用于ViewPage 或者Fragement的一些情况)

一、对于Viewpage,当我们有多个子Fragement的时候,我们需要当前页面的时候才开启图片加载,其他页面不可见的时候,暂停图片加载。

这个时候可以重写 Fragement的setUserVisibleHint方法,

 @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        try {
            if(isVisibleToUser){
                Glide.with((Fragment) this).resumeRequests();
            }else{
                Glide.with((Fragment)this).pauseRequests();
            }
        }catch (IllegalArgumentException e){

        }

    }


二、对于其他情况 可以再生命周期里做处理

比如: Activity 或者Fragement的 

onStart  ,onStop里面 做处理





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

重播

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值