您的位置:首页 > 移动开发 > Android开发

Gilde基础使用

2016-11-02 21:28 501 查看
Glide 是 Google 员工的开源项目, Google I/O 上被推荐使用,一个高效、开源、Android设备上的媒体管理框架,它遵循BSD、MIT以及Apache 2.0协议发布。Glide具有获取、解码和展示视频剧照、图片、动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里。创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。

gitHub地址:https://github.com/bumptech/glide

1.集成环境

集成环境:在 Gradle 项目中在你的 ==build.gradle== 中添加以下代码,后面的3.6.1表示版本号,可以去github上查看最新的版本,

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


也可以使用mave集成环境:

<dependency>

<groupId>com.github.bumptech.glide</groupId>

<artifactId>glide</artifactId>

<version>3.6.1</version>

<type>aar</type>

</dependency>


2.开始使用

2.1最简单的使用:

Glide.with(context).load(imageUrl).into(imageView);


参数说明:context可以是Context、Activity、FragmentActivity、Fragment。表示将加载 图片的请求周期动态管理起来

imageUrl:可以是文件对象、uri。表示要加载路片的路径,可以加载网络的图片。

imageView:表示要显示图片的控件。

2.2 在listView或者GridView中使用Glide

使用Glide在listView中加载图片和普通的使用方法一样,我们只需要在adapter中实现即可实现加载

Glide
.with(context)
.load(imageUrls[position])
.into((ImageView) convertView);


2.3 缓存策略

Glide框架自带了很多中的缓存策略,但是很多时候我们需要根据实际情况来进行选择缓存策略。下面介绍怎么更改缓存策略。

2.3.1 自定义缓存策略

Glide.with(this)
.load(imageUrl)
.diskCacheStrategy(DiskCacheStrategy.ALL)//设置缓存策略
.into(imageView);


缓存策略中参数说明:

all:缓存源资源和转换后的资源

none:不作任何磁盘缓存

source:缓存源资源

result:缓存转换后的资源

2.3.2 内存缓存策略:

Glide
.with( context )
.load( eatFoodyImages[0] )
.skipMemoryCache( true )//设置跳过内存缓存
.into( imageViewInternet );


需要注意的是,这里的跳过内存缓存指的是不将图片缓存到内存中,对于网络图片,还是会将图片缓存到本地的磁盘中以避免重复网络加载。对于同以个url图片地址,两次在对内存缓存设置不一致时,会默认执行不跳过内存缓存,即执行==skipMemoryCache( false )==语句。

2.3.3 磁盘缓存策略:

Glide
.with( context )
.load( imageUrl )
.diskCacheStrategy( DiskCacheStrategy.NONE )//单独禁用磁盘缓存,但是内存缓存仍然使用
.into( imageViewInternet );


如果需要将所有的内存和磁盘缓存全部警用,则可以参考下面的代码:

Glide
.with( context )
.load( imageUrl )
.diskCacheStrategy( DiskCacheStrategy.NONE )//禁用所有缓存
.skipMemoryCache( true )//禁用内存缓存
.into( imageViewInternet );


2.4 占位符何加载动画

2.4.1设置加占位符号:

Glide
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.placeholder(R.mipmap.ic_launcher) //设置占位符
.error(R.mipmap.future_studio_launcher) //设置错误占位符                     .into(imageViewPlaceholder);


2.4.2 设置加载动画

在加载图片时突然改变图片会显得比较显眼,所以我们可以使用动画效果来实现一个比较平滑的过度效果。Glide默认使用淡入淡出效果,如果你想用其他的动画效果,可参考下面的代码:

Glide
.with(this)
.load(imageUrl)
.animate(R.anim.item_alpha_in)
.into(imageView);


R.anim.item_alpha_in的代码:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">

<alpha

android:duration="500"

android:fromAlpha="0.0"

android:toAlpha="1.0"/>

</set>


但是如果你想直接现实图片而不适用任何效果,可以在Glide的建造者中调用.dontAnimate().

Glide

.with(context)

.load(UsageExampleListViewAdapter.eatFoodyImages[0])

.placeholder(R.mipmap.ic_launcher) //

.error(R.mipmap.future_studio_launcher) //

.dontAnimate()//不实现动画效果

.into(imageViewFade);


2.5 重设图片大小和缩放

2.5.1 使用Override设置加载尺寸

Glide
.with(context)
.load(imageUrl)
.override(600, 200) //
.into(imageViewResize);


2.5.2 设置缩略图支持

简单的缩略图

Glide
.with(this)
.load(imageUrl)
.thumbnail(0.1f)//设置缩略图,0.1f表示显示原来图像的10%
.into(imageView);


用其他请求

private void loadImageThumbnailRequest() {
DrawableRequestBuilder<String> thumbnailRequest = Glide
.with( context )
.load( imageUrl );
Glide
.with( context )
.load( UsageExampleGifAndVideos.gifUrl )
.thumbnail( thumbnailRequest )
.into( imageView3 );
}


第一个缩略图请求是完全独立于第二个原始请求的。该缩略图可以是不同的资源或图片 URL,你可以为其应用不同的转换。

2.5.3 缩放图片

对于任何图像操作,调整大小会让你的图片变得长宽失真,显示变得不正常。

这个时候可以使用裁剪技术来避免这种情况发生。

Glide
.with(context)
.load(imageUrl)
.override(600, 200) //改变图片的大小
.centerCrop() // 缩放图像让他填充到imageView界限内并且裁剪额外的部分。imageview可能会完全填充,但图像可能不会完整显示。
.fitCenter() //缩放图像让图像测量出来小于或者等于imageview的边界范围,改图会完全显示,但可能不会填充整个uimageView。与centerCrop()裁剪技术二选一。
.into(imageView);


2.5.4 设置动态GIF加载方式

Glide
.with(this)
.load(imageUrl)
.asBitmap()
.into(imageView);//显示gif静态图片

Glide
.with(this)
.load(imageUrl)
.asGif()
.into(imageView);//显示gif动态图片


以上就是比较常见的Glide的用法,目前就写了这么多,以后有需要在添加更多的用法把。

~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android开源库