Hi,欢迎来到华清远见移动互联网学院官网!国内王牌JAVAEE培训、Android培训、HTML5培训、UI培训、JAVA培训、VR培训机构!

  • 400-611-6270
  • 新浪微博
  • 微信
您当前的位置:移动互联网学院 > Android开发 > Android glide框架怎么使用?

Android glide框架怎么使用?

时间:2017-04-10 13:37 来源:Android开发学习网

今天我们来讲解下android glide框架的使用,Android Glide是Android开发中常用的一种图片加载框架。在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app,今天我们就来讲解下Android Glide框架的具体用法。

1.GlideModule配置参数

package com.cary.okhttp;

import android.content.Context;

import com.bumptech.glide.Glide;

import com.bumptech.glide.GlideBuilder;

import com.bumptech.glide.load.DecodeFormat;

import com.bumptech.glide.load.engine.bitmap_recycle.LruBitmapPool;

import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory;

import com.bumptech.glide.load.engine.cache.LruResourceCache;

import com.bumptech.glide.load.engine.cache.MemorySizeCalculator;

import com.bumptech.glide.module.GlideModule;

/**

* Glide参数配置

*/

public class GlideConfig implements GlideModule {

private final int diskSize = 1024 * 1024 * 100;

private final int memorySize = (int) (Runtime.getRuntime().maxMemory()) / 8; // 取1/8最大内存作为最大缓存

@Override

public void applyOptions(Context context, GlideBuilder builder) {

// 定义缓存大小和位置

builder.setDiskCache(new InternalCacheDiskCacheFactory(context, diskSize)); //内存中

// 默认内存和图片池大小

MemorySizeCalculator calculator = new MemorySizeCalculator(context);

int defaultMemoryCacheSize = calculator.getMemoryCacheSize(); // 默认内存大小

int defaultBitmapPoolSize = calculator.getBitmapPoolSize(); // 默认图片池大小

builder.setMemoryCache(new LruResourceCache(defaultMemoryCacheSize)); // defaultMemoryCacheSizes默认的

builder.setBitmapPool(new LruBitmapPool(defaultBitmapPoolSize));

// 自定义内存和图片池大小

builder.setMemoryCache(new LruResourceCache(memorySize));

builder.setBitmapPool(new LruBitmapPool(memorySize));

// 定义图片格式

builder.setDecodeFormat(DecodeFormat.PREFER_ARGB_8888);

builder.setDecodeFormat(DecodeFormat.PREFER_RGB_565); // 默认

}

@Override

public void registerComponents(Context context, Glide glide) {

}

}

配置androidManifestxml

android:name="com.cary.okhttp.GlideConfig"

android:value="GlideModule"/>

配置proguard-rules.pro

-keepnames class * com.example.jianglei.glidedemo.GlideModelConfig

Glide允许一个应用当中存在多个GlideModules,但是Glide并不会按照一个特殊的顺序去调用已注册的GlideModules,如果一个应用的多个依赖工程当中有多个相同的Modules,就有可能会产生冲突。

如果一个冲突是不可避免的,应用应该默认去定义一个自己的Module,用来手动地处理这个冲突,在进行Manifest合并的时候,可以用下面的标签排除冲突的Module:

2.GlideUtils

package com.cary.okhttp;

import android.content.Context;

import android.widget.ImageView;

import com.bumptech.glide.Glide;

import com.bumptech.glide.Priority;

import com.bumptech.glide.load.engine.DiskCacheStrategy;

/**

* Created by xi on 2017/4/9.

*/

public class GlideUtil {

/**

* 异步网络图片加载

* @param context

* @param url

* @param imageView

*/

public static void loadNetImg(Context context, String url,ImageView imageView){

//http://inthecheesefactory.com/uploads/source/glidepicasso/cover.jpg

Glide.with(context)

.load(url)

.into(imageView);

}

/**

* 异步网络图片加载并设置图片显示大小

* @param context

* @param url

* @param imageView

* @param width

* @param height

*/

public static void loadImgWithSize(Context context, String url,ImageView imageView, int width, int height){

Glide.with(context).load(url).override(width, height).into(imageView);

}

/**

* 异步网络加载图片,失败加载默认图片

* @param context

* @param url

* @param imageView

*/

public static void loadImgWithError(Context context, String url,ImageView imageView){

Glide.with(context)

.load(url)

.placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher).into(imageView);

}

/**

* 网络图片加载动画

* @param context

* @param url

* @param imageView

* @param animId

*/

public static void loadImgWithAnimate(Context context, String url,ImageView imageView, int animId){

Glide.with(context).load(url).animate(animId).into(imageView);

}

/**

* 图片加载完成后回掉

*/

/**

* 支持缩略图,先加载缩略图 然后在加载全图

* @param context

* @param url

* @param imageView

*/

public static void loadGifWihtThumbnail(Context context, String url,ImageView imageView){

Glide.with(context).load(url).thumbnail(0.1f).into(imageView); //传了一个 0.1f 作为参数,Glide 将会显示原始图像的10%的大小。

}

/**

* 显示gif静态图

* @param context

* @param url

* @param imageView

*/

public static void loadAsBitmap(Context context, String url,ImageView imageView) {

Glide.with(context).load(url).asBitmap().into(imageView);

}

/**

* 显示gif动态图

* @param context

* @param url

* @param imageView

*/

public static void loadAsGif(Context context, String url,ImageView imageView) {

Glide.with(context).load(url).asGif().into(imageView);

}

/**

* 设置磁盘缓存

* @param context

* @param url

* @param imageView

*/

public static void loadWithDiskCache(Context context, String url,ImageView imageView){

//缓存参数

//ALL:缓存源资源和转换后的资源(即所有版本,默认行为)

//NONE:不作任何磁盘缓存。然而,默认的它将仍然使用内存缓存!

//SOURCE:仅缓存源资源(原来的全分辨率的图像)。

//在我们上面略缩图的例子中,将会只有一个1000x1000 像素的图片

//RESULT:缓存转换后的资源(最终的图像,即降低分辨率后的(或者是转换后的)

Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);

}

/**

* 跳过内存缓存

* @param context

* @param url

* @param imageView

*/

public static void loadWithSkipMemoryCache(Context context, String url,ImageView imageView){

//设置跳过内存缓存

//这意味着 Glide 将不会把这张图片放到内存缓存中去

//这里需要明白的是,这只是会影响内存缓存!Glide 将会仍然利用磁盘缓存来避免重复的网络请求。

Glide.with(context)

.load(url)

.skipMemoryCache(true)

.into(imageView);

}

/**

* 设置加载优先级

* @param context

* @param url

* @param imageView

*/

public static void loadByPriority(Context context, String url,ImageView imageView){

Glide.with(context).load(url).priority(Priority.NORMAL).into(imageView);

}

/**

* 清理内存缓存 可以在UI主线程中进行

* @param context

*/

public static void clearMemoryCache(Context context){

Glide.get(context).clearMemory();

}

/*

* 绑定生命周期:如果绑定对象生命周期结束,那么等待中的加载请求会被取消

* .with(Context context)// 绑定Context

.with(Activity activity);// 绑定Activity

.with(FragmentActivity activity);// 绑定FragmentActivity

.with(Fragment fragment);// 绑定Fragment

*/

}

以上就是关于android glide框架使用的内容,更多Android开发技术分享请持续关注我们。

  • 北京

    010-82600385/6

    北京市海淀区西三旗悦秀路北京明园大学校内

  • 上海

    021-54485127

    上海市徐汇区漕溪路250号银海大楼11层

  • 深圳

    0755-25590506

    深圳市龙华新区人民北路美丽AAA大厦15层

  • 成都

    028-85405115

    成都武侯区科华北路99号科华大厦2层

  • 南京

    025-86551900

    南京市白下区汉中路185号鸿运大厦11层

  • 武汉

    027-87804688

    武汉工程大学卓刀泉校区科技孵化器大楼11层

  • 西安

    029-88756251

    西安市高新区高新1路12号天公大厦3层

  • 广州

    020-38342087

    广州市天河软件园柯木塱园5栋三层

  • 沈阳

    024-24349000

    沈阳市沈河区北顺城路137号锦峰大厦7层

  • 济南

    0531-88898293

    济南市高新区舜华路三庆世纪财富中心B3座6层

  • 重庆

    023-68064704

    重庆市九龙坡区渝州路87号双薪时代九楼

  • 长沙

    15010390966

    长沙市开福区芙蓉中路海东青大厦B座11楼

Copyright © 2004-2017 华清远见教育集团 版权所有,沪ICP备10038863号-3,京公海网安备110108001117号