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 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里面 做处理





你可能感兴趣的:(android)