Android Glide的使用案例分享

12/28 编程语言 阅读 727 views 次 人气 0
摘要:

说明:

Glide用法类似于Picasso,点用内存比Picasso少,加载速度更快(因为可以缓存压缩后的尺寸,读取时直接获取对应尺寸的缓存,无需压缩过程),可以设置缓存全尺寸和各种比例的尺寸。

--------------------------------------------------------------------------------------------------------------------------------------

使用:

1.在app的build.gradle加入依赖:

dependencies {

    ...

    compile 'com.squareup.okio:okio:1.11.0'

    compile 'com.squareup.okhttp3:okhttp:3.5.0'

    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.github.bumptech.glide:okhttp3-integration:1.4.0@aar'

}

2.ImageLoadUtil类,调用了Glide中的api加载图片并显示到ImageView上:

--------------------------------------------------------------------------------------------------------------------------------------

public class ImageLoadUtil {

    /**
     * 图片加载并显示到ImageView上
     */
    public static void showImage(Activity activity, String url, ImageView iv) {
                Glide
                .with(activity)    //传入Activity(还可传入Fragment、Context),内部会根据生命周期进行相应的控制与销毁
                .load(url)  //传入图片url或本地路径
                .placeholder(R.mipmap.user_header_default) //加载成功之前的默认图片
                .error(R.mipmap.user_header_default)  //加载失败显示的图片
                .diskCacheStrategy(DiskCacheStrategy.ALL)  //设置可以缓存全尺寸和各压缩后的尺寸
//                .override(200, 200)   //Bitmap压缩宽高
//                .centerCrop()
                .crossFade() //设置淡入淡出动画,可以使用.animate(R.anim.动画文件)自定义动画效果
                .into(iv); //传入ImageView
    }

}

--------------------------------------------------------------------------------------------------------------------------------------

3.配置使用Okhttp请求框架,在AndroidManifest.xml中manifest标签中加入:

<meta-data
        android:name="com.bumptech.glide.integration.okhttp.OkHttpGlideModule"
        android:value="GlideModule" />


4.配置本地缓存、内存缓存、图片编码格式:

(1)自定义一个GlideModule实现子类:

public class GlideModuleConfig implements GlideModule {

    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        builder.setDiskCache(new InternalCacheDiskCacheFactory(context, "glideCache", Contants.DISK_CACHE_SIZE)); //设置本地缓存路径和缓存最大值
        builder.setMemoryCache(new LruResourceCache(Contants.MEMORY_CACHE_SIZE)); //设置内存缓存最大值
        builder.setBitmapPool(new LruBitmapPool(Contants.MEMORY_CACHE_SIZE)); //设置Bitmap内存占用最大值
        builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);  //设置图片编码格式
    }

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

--------------------------------------------------------------------------------------------------------------------------------------

(2)配置GlideModule实现子类,在AndroidManifest.xml中manifest标签中加入:

<meta-data
        android:name="com.g.im.utils.GlideModuleConfig"
        android:value="GlideModule" />

小奋斗文章

--------------------------------------------------------------------------------------------------------------------------------------

评论

该文章不支持评论!

分享到: