Android开源框架Glide的使用
2016-11-01 09:46
711 查看
Android开源框架Glide的使用
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
<dependency> <groupId>com.github.bumptech.glide</groupId> <artifactId>glide</artifactId> <version>3.7.0</version> </dependency> <dependency> <groupId>com.google.android</groupId> <artifactId>support-v4</artifactId> <version>r7</version> </dependency>
* 混淆
-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….
相关文章推荐
- Android实践 -- Android开源框架Glide的使用
- Android开源框架Glide的基本使用-示例应用
- Android开源框架Glide的使用-示例应用
- Androidannotations——开源框架简介&简易使用准备
- 【Android开源框架】使用andbase开发框架实现绘制折线图
- 转:Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- Android开源框架AsyncHttpClient (android-async-http)使用
- 【Android开源框架】FinalHttp的简要介绍与使用
- 开源框架android-async-http使用
- android开源框架android-async-http使用
- Android使用开源框架加载图片
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- android开源框架android-async-http使用
- android开源框架android-async-http使用
- Android开源:网络框架volley使用(一)---使用方法笔记
- Android 开源框架Universal-Image-Loader完全解析(一)--- 基本介绍及使用
- 【Android开源框架】FinalBitmap的简要介绍与使用
- Android 开源框架ViewPageIndicator(标签指示器)结合ViewPager使用