使用Android Glide技术实现图片加载和播放视频
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技术实现图片加载和播放视频相关推荐
- android Glide 4.0图片加载失败
项目中查看大图,并可以拖拽缩放,但是在加载图片等时候有些图片不能加载出来,报了一个错误: class com.bumptech.glide.load.engine.GlideException: Fa ...
- 从源码分析Android的Glide库的图片加载流程及特点
转载:http://m.aspku.com/view-141093.html 这篇文章主要介绍了从源码分析Android的Glide库的图片加载流程及特点,Glide库是Android下一款人气很高的 ...
- Carson带你学Android:主流开源图片加载库对比(UIL、Picasso、Glide、Fresco)
前言 图片加载在 Android开发项目中十分常见 为了降低开发周期 & 难度,我们经常会选用一些图片加载的开源库,而现在图片加载开源库越来越多,我们应该选用哪种呢? 今天.我就给大家介绍 & ...
- Android自助餐之大图片加载
Android自助餐之大图片加载 原理 使用BitmapFactory.decodeStreeam()方法,该方法会调用native层代码来创建bitmap(两个重载都会调用) 使用带BitmapFa ...
- Android笔记之(图片高斯+Glide实现微信图片加载策略+仿微信进度条)
很久以前就想自己实现一下仿微信图片加载的那种策略了,先加载一张模糊的图片,然后再加载清晰大图,今天研究了一下,不过要是Glide支持进度条显示就好了,不得不说Glide很强大, 不啰嗦了,直接上代码了 ...
- Android Google推荐的图片加载库Glide介绍
英文原文 Introduction to Glide, Image Loader Library for Android, recommended by Google 首发地址 http://jc ...
- android图片加载过程,教你写Android ImageLoader框架之图片加载与加载策略
在教你写Android ImageLoader框架之初始配置与请求调度中,我们已经讲述了ImageLoader的请求配置与调度相关的设计与实现.今天我们就来深入了解图片的具体加载过程以及加载的策略(包 ...
- Android中常见的图片加载框架
图片加载涉及到图片的缓存.图片的处理.图片的显示等.而随着市面上手机设备的硬件水平飞速发展,对图片的显示要求越来越高,稍微处理不好就会造成内存溢出等问题.很多软件厂家的通用做法就是借用第三方的框架进行 ...
- android URI 和 UIL 图片加载问题
ImageLoader加载图片问题: UIL图片加载已经非常熟悉,已经知道的是采用的是两级缓存: 内存中和磁盘上 如果都没有则从网络下载. 缓存的依据: UIL根据图片的URI获取缓存在磁盘文件的MD ...
最新文章
- js中的if与Java中的if_JavaScript if...else 语句
- 理科生的体面,是不是全在那些幻想里?
- macOS配置Apache服务器
- python从入门到放弃图片大全-Python 从入门到放弃(一)
- Bootstrap+jquery实现页面跳转【小demo】
- C++远航之封装篇——对象指针、this指针
- 如何让Jython自动加载一个Jar包
- Ros中Remap(话题重映射)的两种使用方法
- armbian php ldap,N1刷Armbian后刷Seafile7.1.5做家庭云盘提要
- 昨晚我把900W+数据,从17s优化到300ms
- 【洛谷P4706】取石子
- matlab微积分如何计算器,如何用电脑进行微分计算/如何用科学计算器计算微积分...
- 算法设计与分析——算法分析基础
- 免费的json api接口(音乐、物流、地图、视频)
- 将pdf文件缩到最小的小技巧
- Mac上最好的方式下载BT上的音乐
- youtube-dl 下载 playlist 命令
- if (Build.VERSION.SDK_INT = Build.VERSION_CODES.KITKAT)设置后的效果
- 阿里云视频点播上传与url播放
- win10连接文件服务器记住密码如何删除,win10如何删除局域网共享文件访问密码...
热门文章
- vant 引入其他图标
- Xposed无法下载full.xml.gz报错解决方法
- 我的VMware认证设计专家(VCDX)之路-心得篇
- 会声会影剪切合并歌曲教程
- elisa标准曲线怎么做_ELISA标准曲线的绘制注意事项
- 计算机三级数据库2020年试题,2020年计算机三级数据库考试模拟强化试题及答案...
- 如何打造个人技术影响力
- 浅析actran气动噪声仿真技术,以圆柱绕流气动噪声仿真为例
- 【WIFI】WiFi驱动中的Band Steering功能
- SPFA + 静态邻接表 模板