Glide特点

使用简单
可配置度高,自适应程度高
支持常见图片格式 Jpg png gif webp
支持多种数据源 网络、本地、资源、Assets 等
高效缓存策略 支持Memory和Disk图片缓存 默认Bitmap格式采用 - RGB_565内存使用至少减少一半
生命周期集成 根据Activity/Fragment生命周期自动管理请求
高效处理Bitmap 使用Bitmap Pool使Bitmap复用,主动调用recycle回收需要回收的Bitmap,减小系统回收压力

本文主要说明用此技术实现图片加载和播放视频

1.在listview或者recycleView中使用

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (null == convertView) {//.....}Glide.with(context).load(imageUrls[position]).into(holder.imageView);return convertView;}

recycleView中可以在Adapter的onBindViewHolder方法中使用。

建议with()传参的时候传递Activity 和 Fragment给Glide,而不是Context。将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载。

2.设置加载网络时等待的

Glide.with(context).load(UsageExampleListViewAdapter.eatFoodyImages[0]).placeholder(R.mipmap.ic_launcher) // can also be a drawable.into(imageViewPlaceholder);

3.设置加载失败后的图片显示

Glide.with(context).load("http://futurestud.io/non_existing_image.png").error(R.mipmap.future_studio_launcher) // will be displayed if the image cannot be loaded.into(imageViewError);

4.设置图片的缩放

//使用centerCrop是利用图片图填充ImageView设置的大小,如果ImageView的
//Height是match_parent则图片就会被拉伸填充
Glide.with(MainActivity.this).load(args[position]).centerCrop().into(holder.imageView);
//使用fitCenter即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围
//该图像将会完全显示,但可能不会填满整个 ImageView。
Glide.with(MainActivity.this).load(args[position]).fitCenter().into(holder.imageView);

5.加载gif动画

Glide  .with( context ).load( gifUrl ).asGif() //判断加载的url资源是否为gif格式的资源.error( R.drawable.full_cake ).into( imageViewGif );

6.显示本地视频

String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide  .with( context ).load( Uri.fromFile( new File( filePath ) ) ).into( imageViewGifAsBitmap );

7.设置glide的缓存策略

Glide  .with( context ).load( Images[0] ).skipMemoryCache( true ) //跳过内存缓存.into( imageViewInternet );
Glide  .with( context ).load( images[0] ).diskCacheStrategy( DiskCacheStrategy.NONE ) //跳过硬盘缓存.into( imageViewInternet );
DiskCacheStrategy.NONE 什么都不缓存
DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像
DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即降低分辨率后的(或者是转换后的)
DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为)

8.不将加载的资源放入ImageView而是获取资源的Bitmap对象:

//括号中的300,600代表宽和高但是未有作用
SimpleTarget target = new SimpleTarget<Bitmap>(300,600) {@Overridepublic void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {//在这里对返回的bitmap进行处理}};Glide.with(MainActivity.this).load(args[position]).asBitmap().into(target);

注:在列表中使用gilde的时候,会出现图片变形的情况,当刷新的时候才会正常显示,这个问题就是因为动画加载的过程中图片还没有下载下来导致的,这个时候把动画给禁止了就可以了,也可以把加载失败时候的图片给禁止掉,这样就可以直接加载出图片了,但是图片一定要可以下载下来.

使用Android Glide技术实现图片加载和播放视频相关推荐

  1. android Glide 4.0图片加载失败

    项目中查看大图,并可以拖拽缩放,但是在加载图片等时候有些图片不能加载出来,报了一个错误: class com.bumptech.glide.load.engine.GlideException: Fa ...

  2. 从源码分析Android的Glide库的图片加载流程及特点

    转载:http://m.aspku.com/view-141093.html 这篇文章主要介绍了从源码分析Android的Glide库的图片加载流程及特点,Glide库是Android下一款人气很高的 ...

  3. Carson带你学Android:主流开源图片加载库对比(UIL、Picasso、Glide、Fresco)

    前言 图片加载在 Android开发项目中十分常见 为了降低开发周期 & 难度,我们经常会选用一些图片加载的开源库,而现在图片加载开源库越来越多,我们应该选用哪种呢? 今天.我就给大家介绍 & ...

  4. Android自助餐之大图片加载

    Android自助餐之大图片加载 原理 使用BitmapFactory.decodeStreeam()方法,该方法会调用native层代码来创建bitmap(两个重载都会调用) 使用带BitmapFa ...

  5. Android笔记之(图片高斯+Glide实现微信图片加载策略+仿微信进度条)

    很久以前就想自己实现一下仿微信图片加载的那种策略了,先加载一张模糊的图片,然后再加载清晰大图,今天研究了一下,不过要是Glide支持进度条显示就好了,不得不说Glide很强大, 不啰嗦了,直接上代码了 ...

  6. Android Google推荐的图片加载库Glide介绍

    英文原文 Introduction to Glide, Image Loader Library for Android, recommended by Google 首发地址   http://jc ...

  7. android图片加载过程,教你写Android ImageLoader框架之图片加载与加载策略

    在教你写Android ImageLoader框架之初始配置与请求调度中,我们已经讲述了ImageLoader的请求配置与调度相关的设计与实现.今天我们就来深入了解图片的具体加载过程以及加载的策略(包 ...

  8. Android中常见的图片加载框架

    图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行 ...

  9. android URI 和 UIL 图片加载问题

    ImageLoader加载图片问题: UIL图片加载已经非常熟悉,已经知道的是采用的是两级缓存: 内存中和磁盘上 如果都没有则从网络下载. 缓存的依据: UIL根据图片的URI获取缓存在磁盘文件的MD ...

最新文章

  1. js中的if与Java中的if_JavaScript if...else 语句
  2. 理科生的体面,是不是全在那些幻想里?
  3. macOS配置Apache服务器
  4. python从入门到放弃图片大全-Python 从入门到放弃(一)
  5. Bootstrap+jquery实现页面跳转【小demo】
  6. C++远航之封装篇——对象指针、this指针
  7. 如何让Jython自动加载一个Jar包
  8. Ros中Remap(话题重映射)的两种使用方法
  9. armbian php ldap,N1刷Armbian后刷Seafile7.1.5做家庭云盘提要
  10. 昨晚我把900W+数据,从17s优化到300ms
  11. 【洛谷P4706】取石子
  12. matlab微积分如何计算器,如何用电脑进行微分计算/如何用科学计算器计算微积分...
  13. 算法设计与分析——算法分析基础
  14. 免费的json api接口(音乐、物流、地图、视频)
  15. 将pdf文件缩到最小的小技巧
  16. Mac上最好的方式下载BT上的音乐
  17. youtube-dl 下载 playlist 命令
  18. if (Build.VERSION.SDK_INT = Build.VERSION_CODES.KITKAT)设置后的效果
  19. 阿里云视频点播上传与url播放
  20. win10连接文件服务器记住密码如何删除,win10如何删除局域网共享文件访问密码...

热门文章

  1. vant 引入其他图标
  2. Xposed无法下载full.xml.gz报错解决方法
  3. 我的VMware认证设计专家(VCDX)之路-心得篇
  4. 会声会影剪切合并歌曲教程
  5. elisa标准曲线怎么做_ELISA标准曲线的绘制注意事项
  6. 计算机三级数据库2020年试题,2020年计算机三级数据库考试模拟强化试题及答案...
  7. 如何打造个人技术影响力
  8. 浅析actran气动噪声仿真技术,以圆柱绕流气动噪声仿真为例
  9. 【WIFI】WiFi驱动中的Band Steering功能
  10. SPFA + 静态邻接表 模板