android glide配置,Android实践 -- Android开源框架Glide的使用

Android开源框架Glide的使用

299c8332aca6

来自 www.gratisography.com

Glide是一个快速高效的多媒体管理和图像加载的框架,封装了Android平台的多媒体的解码,内存和硬盘缓存等,Glide

支持解码、显示视频、图像和GIFs,Glide是基于定制的HttpUrlConnection,下载使用

jar

可以在Github下载最新的jar包 下载地址

Gradle

repositories {

mavenCentral() // jcenter() works as well because it pulls from Maven Central

}

dependencies {

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

compile 'com.android.support:support-v4:19.1.0'

}

Maven

com.github.bumptech.glide

glide

3.7.0

com.google.android

support-v4

r7

* 混淆

-keep public class * implements com.bumptech.glide.module.GlideModule

-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {

**[] $VALUES;

public *;

}

-keepresourcexmlelements manifest/application/meta-data@value=GlideModule

加载图片

最基本的使用

image = (ImageView)findViewById(R.id.image);

Glide.with(this)

.load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.into(image);

with(Context context):Context支持 Activity Context Fragment FragmentActivity中四种类型

load():支持远程图片,本地图片文件,图片资源,多媒体数据库的uri

into():在哪个imageview中显示

加载资源图片

Glide.with(this).load(R.drawable.ic_launcher).into(image);

加载文件图片

File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/DCIM/Camera/IMG_20151025_120635_HDR.jpg");

Glide.with(this).load(f).into(image);

//or uri

Glide.with(this).load(Uri.fromFile(f)).into(image);

加载网络图片,需要设置网路权限,并联网

Glide.with(this)

.load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.into(image);

设置占位图和动画

在图片过大或者网上太慢时,可以设置为图像设置一个占位图,在图像加载出来之前先显示占位图设置占位图的方式

还可以设置在图像加载失败时显示的图像

Glide.with(this).load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.placeholder(R.drawable.ic_launcher) //设置占位图,在加载之前显示

.error(R.drawable.icon) //在图像加载失败时显示

.into(image);

在加载图像时,还可以设置图像显示的动画

Glide.with(this).load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.placeholder(R.drawable.ic_launcher)

.error(R.drawable.icon)

.crossFade() //设置显示动画,

.into(image);

crossFade()有几种重载的方法

crossFade(int duration):设置时间

crossFade(Animation animation, int duration):设置自定义的动画和时间

crossFade(int animationId, int duration): 加载动画资源和时间

图像剪裁和缩放

Glide提供了override(horizontalSize, verticalSize)方法来裁剪图像为设置的大小,图像在裁剪之后

图像可能会变形,Glide还提供了两种方法 centerCrop()和fitCenter使图像等比例的缩放和显示,可以试一下

这个两个方法的显示的不同

Glide.with(this)

.load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.override(200, 240)

.centerCrop()

.into(image);

Glide.with(this)

.load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.override(200, 240)

.fitCenter()

.into(image);

显示Gif和视频

Glide中支持显示GIFs和视频,视频的加载和图像的加载基本一致,显示GIFs只需调用方法asGif()

Glide

.with( context )

.load( gifUrl )

.asGif()

.error( R.drawable.full_cake )

.into( imageViewGif );

也可以只显示GIFs的静态图像

Glide

.with( context )

.load( gifUrl )

.asBitmap()

.into( imageViewGifAsBitmap );

缓存

我们都知道图像的处理和显示在Android中是最耗费内存的,很容易引起OOM的问题,一般在图像处理和显示时,

都会使用缓存策略,内存缓存或硬盘缓存,在Glide中也提供了不同的缓存策略,默认的情况下会将显示的图像

进行内存缓存,也可以设置不使用内存缓存,调用方法skipMemoryCache(true),就告诉Glide我们不打算使用

内存缓存,默认是使用内存缓存的

Glide.with(this)

.load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.skipMemoryCache(true)

.into(image);

Glide同时也提供了硬盘缓存,硬盘缓存的策略可以通过方法diskCacheStrategy()来设定

Glide.with(this)

.load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.diskCacheStrategy(DiskCacheStrategy.NONE) //不使用硬盘缓存

.into(image);

硬盘缓存策略

DiskCacheStrategy.NONE: 不使用硬盘缓存

DiskCacheStrategy.SOURCE: 将原始图像缓存在硬盘中

DiskCacheStrategy.RESULT: 将显示出来大小的图像缓存在硬盘(默认缓存策略)

DiskCacheStrategy.ALL: 显示的图像和原始图像都会缓存

请求优先级

Glide中可以设置图像加载的优先级,这个优先级的策略并不是严格执行的,只是一个指导策略,从低到高的

优先级,可以为不同的图像设置不同的优先级,看一下加载的效果

Priority.LOW

Priority.NORMAL

Priority.HIGH

Priority.IMMEDIATE

Glide.with(this)

.load("http://ww4.sinaimg.cn/large/610dc034gw1f96kp6faayj20u00jywg9.jpg")

.priority(Priority.HIGH)

.into(image);

自定义转换和动画

Glide提供了方法可以使开发者自定义转换(圆角图像、图像模糊等)和动画

后续会有demo实例,To be continue....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android图片框架Glide-3.7.0(最新,很强大),超好用的图片框架(包含jar和源码) Glide 是一个高效、开源Android设备上的媒体管理框架,它遵循BSD、MIT以及Apache 2.0协议发布。Glide具有获取、解码和展示视频剧照、图片、动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里。创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。近日,Glide 3.0发布,现已提供 jar包下载 ,同时还支持使用Gradle以及Maven进行构建。该版本包括很多值得关注的新功能,如支持Gif 动画和视频剧照解码、智能的暂停和重新开始请求、支持缩略图等,具体新增功能如下如下: GIF 动画的解码 :通过调用Glide.with(context).load(“图片路径“)方法,GIF动画图片可以自动显示为动画效果。如果想有更多的控制,还可以使用Glide.with(context).load(“图片路径“).asBitmap()方法加载静态图片,使用Glide.with(context).load(“图片路径“).asGif()方法加载动画图片 本地视频剧照的解码: 通过调用Glide.with(context).load(“图片路径“)方法,Glide能够支持Android设备中的所有视频剧照的加载和展示 缩略图的支持: 为了减少在同一个view组件里同时加载多张图片的时间,可以调用Glide.with(context).load(“图片路径“).thumbnail(“缩略比例“).into(“view组件“)方法加载一个缩略图,还可以控制thumbnail()中的参数的大小,以控制显示不同比例大小的缩略图 Activity 生命周期的集成: 当Activity暂停和重启时,Glide能够做到智能的暂停和重新开始请求,并且当Android设备的连接状态变化时,所有失败的请求能够自动重新请求 转码的支持: Glide的toBytes() 和transcode() 两个方法可以用来获取、解码和变换背景图片,并且transcode() 方法还能够改变图片的样式 动画的支持: 新增支持图片的淡入淡出动画效果(调用crossFade()方法)和查看动画的属性的功能 OkHttp 和Volley 的支持: 默认选择HttpUrlConnection作为网络协议栈,还可以选择OkHttp和Volley作为网络协议栈 其他功能: 如在图片加载过程中,使用Drawables对象作为占位符、图片请求的优化、图片的宽度和高度可重新设定、缩略图和原图的缓存等功能

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值