Glide图片框架使用详细介绍(一)

本文详细介绍了Glide库在Android中的使用,包括添加依赖、基本用法、加载不同类型的数据源、设置占位图和异常占位图、动画控制、图片大小调整、加载优先级以及缩略图优化。作者还分享了如何利用Glide提高用户体验和性能优化技巧。
摘要由CSDN通过智能技术生成

首先,添加依赖

dependencies {

compile ‘com.github.bumptech.glide:glide:3.7.0’

}

基本使用是:

Glide.with(this).load(url).into(imageView);

2、with()

this可以是

Context

Activity

Fragment

FragmentActivity

ApplicationContext

Context、Activity、Fragment、FragmentActivity在glide经过方法都是向activity中添加一个fragment,因为glide无法直接获取到activity,添加一个与activity绑定的fragment,可以保证glide随着activity的生命周期变化而停止暂时取消加载请求。

3、load()

load是核心的请求方法,

load(url)可以加载本地,网络资源

// 加载本地图片

File file = new File(getExternalCacheDir() + “/image.jpg”);

Glide.with(this).load(file).into(imageView);

// 加载应用资源

int resource = R.drawable.image;

Glide.with(this).load(resource).into(imageView);

// 加载二进制流

byte[] image = getImageBytes();

Glide.with(this).load(image).into(imageView);

// 加载Uri对象

Uri imageUri = getImageUri();

Glide.with(this).load(imageUri).into(imageView);

4、加载占位图和异常占位图

加载需要过程,因此用一个占位图能大大改善用户体验,同样当因为网络等原因加载不出来,用一个异常占位图也很重要。

Glide.with(this)

.load(url)

.placeholder(R.drawable.loading)

.error(R.drawable.error)

.into(imageView);

5、设置是否加载动图

asBitmap()只加载静止图片

.asGif()只加载动态图片

设置成asBitmap的时候你去加载gif图片,那么只会显示静态图片,

设置成.asGif的时候你去加载静态图片会显示错误图片,报错。

Glide.with(this)

.load(url)

.asBitmap()

.placeholder(R.drawable.loading)

.error(R.drawable.error)

.diskCacheStrategy(DiskCacheStrategy.NONE)

.into(imageView);

6、Glide 使用加载动画和禁止动画

glide默认有淡入淡出动画.crossFade()也不必加上。

Glide

.with(context)

.load(UsageExampleListViewAdapter.eatFoodyImages[0])

.placeholder(R.mipmap.ic_launcher)

.error(R.mipmap.future_studio_launcher)

.crossFade()

.into(imageViewFade);

但其中crossFade()方法还有另外重载方法 .crossFade(int duration),如果你想要去减慢(或加快)动画,随时可以传一个毫秒的时间给这个方法。动画默认的持续时间是 300毫秒。

当然你也可以选择不要这个动画。

加上.dontAnimate() 禁止动画

Glide

.with(context)

.load(UsageExampleListViewAdapter.eatFoodyImages[0])

.placeholder(R.mipmap.ic_launcher)

.error(R.mipmap.future_studio_launcher)

.dontAnimate()

.into(imageViewFade);

7、设置图片大小;

Picasso是加载了全尺寸的图片到内存,然后让GPU来实时重绘大小。而Glide加载的大小和ImageView的大小是一致的,自动适配大小,因此更小。

但你也可以为glide图片设置大小:

.override(300, 200); //设置尺寸大小

8、图片请求的优先级

通常,你会遇到这样的使用场景:你的 App 将会需要在同一时间内加载多个图像。让我们假设你正在构建一个信息屏幕,这里有一张很大的英雄图片在顶部,还有两个小的,在底部还有一些不那么重要的图片。对于最好的用户体验来说,应用图片元素是显示要被加载和显示的,然后才是底部不紧急的 ImageView。Glide 可以用 Priority 枚举来支持你这样的行为,调用 .priority() 方法。

但在看这个方法调用的示例代码之前,让么我看看 priority 的枚举值,它首先作为 .priority() 方法的参数的。

了解 Priority (优先级)枚举

这个枚举给了四个不同的选项,下面是按照递增priority(优先级)的

Priority.LOW

Priority.NORMAL

Priority.HIGH

Priority.IMMEDIATE

开始例子前,你应该知道的是:优先级并不是完全严格遵守的。Glide 将会用他们作为一个准则,并尽可能的处理这些请求,但是它不能保证所有的图片都会按照所要求的顺序加载。

然而,如果你有的使用场景是确定一些图片是重要的,充分利用它!

使用实例:英雄元素和子图像

让我们开始回到开始时的例子吧。你正在实现一个信息详情页面,有一个英雄图片在顶部,和较小的图片在底部。对于最好的用户体验来说,英雄图片首先需要被加载。因此,我们用 Priority.HIGH 来处理它。理论上说,这应该够了,但是为了让这个实例增加点趣味,我们也将底层图像分配给低优先级,用 .priority(Priority.LOW) 调用:

private void loadImageWithHighPriority() {

Glide

.with( context )

.load( UsageExampleListViewAdapter.eatFoodyImages[0] )

.priority( Priority.HIGH )

.into( imageViewHero );

}

private void loadImagesWithLowPriority() {

Glide

.with( context )

.load( UsageExampleListViewAdapter.eatFoodyImages[1] )

.priority( Priority.LOW )

.into( imageViewLowPrioLeft );

Glide

.with( context )

.load( UsageExampleListViewAdapter.eatFoodyImages[2] )

.priority( Priority.LOW )

.into( imageViewLowPrioRight );

}

9、缩略图

在你要用缩略图去做优化之前,确保你理解和掌握了所有缓存的选项和请求优先级。如果你已经实现了这些,再来查看缩略图是否能帮助更好的提高你的

Android 应用。

缩略图不同于之前博客提到的占位符。占位符必须附带应用程序捆绑的资源才行。缩略图是动态占位符。它也可以从网络中加载。缩略图将会在实际请求

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下图是我进阶学习所积累的历年腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节

[外链图片转存中…(img-mLNKh7nF-1713371258748)]

整理不易,望各位看官老爷点个关注转发,谢谢!祝大家都能得到自己心仪工作。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值