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
也可以使用mave集成环境:
参数说明:context可以是Context、Activity、FragmentActivity、Fragment。表示将加载 图片的请求周期动态管理起来
imageUrl:可以是文件对象、uri。表示要加载路片的路径,可以加载网络的图片。
imageView:表示要显示图片的控件。
缓存策略中参数说明:
all:缓存源资源和转换后的资源
none:不作任何磁盘缓存
source:缓存源资源
result:缓存转换后的资源
需要注意的是,这里的跳过内存缓存指的是不将图片缓存到内存中,对于网络图片,还是会将图片缓存到本地的磁盘中以避免重复网络加载。对于同以个url图片地址,两次在对内存缓存设置不一致时,会默认执行不跳过内存缓存,即执行==skipMemoryCache( false )==语句。
如果需要将所有的内存和磁盘缓存全部警用,则可以参考下面的代码:
R.anim.item_alpha_in的代码:
但是如果你想直接现实图片而不适用任何效果,可以在Glide的建造者中调用.dontAnimate().
用其他请求
第一个缩略图请求是完全独立于第二个原始请求的。该缩略图可以是不同的资源或图片 URL,你可以为其应用不同的转换。
这个时候可以使用裁剪技术来避免这种情况发生。
以上就是比较常见的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的用法,目前就写了这么多,以后有需要在添加更多的用法把。
~~
相关文章推荐
- 学习 Eclipse基础--使用links方式安装Eclipse插件
- 使用MIDP2.0开发游戏 (1) GameCanvas基础
- Rational Robot 基础使用手册(十三)
- 软件架构训练基础教程之层次及使用
- Eclipse基础--使用links方式安装Eclipse插件
- [软件架构训练基础教程-7]层次及使用
- 企业信息化系统基础——AD:使用C#批量创建帐号
- Eclipse基础--使用links方式安装Eclipse插件
- Unix基础之 TCP/IP管理及使用
- 企业信息化系统基础——AD:使用C#批量创建帐号
- Rational Robot 基础使用手册(五)
- Rational Robot 基础使用手册(十)
- Rational Robot 基础使用手册(十二)
- Rational Robot 基础使用手册(六)
- Eclipse基础--使用links方式安装Eclipse插件
- Cookie使用基础
- Rational Robot 基础使用手册(四)
- Eclipse基础--使用links方式安装Eclipse插件
- NHibernate0.7 发布,软件基础开发平台以及在软件基础开发平台中使用O/R Mapping
- 在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分