Android Glide 的简单使用(一)

本文详细介绍了Android中Glide库的使用,包括基本用法、图片加载、占位符、错误图、缓存、生命周期集成、自定义选项、性能优化等方面。Glide支持图片、视频快照和GIF,提供了灵活的网络栈集成,注重滚动性能和资源管理。通过GlideModule可以扩展API,使用注解处理器生成Generated API,实现更便捷的定制选项和类型支持。同时,文章还展示了如何实现高斯模糊和自定义Transformations。
摘要由CSDN通过智能技术生成

Glide 支持拉取,解码和展示视频快照,图片,和GIF动画

Glide的Api十分灵活,开发者甚至可以插入和替换成自己喜爱的任何网络栈。默认情况下,Glide使用的是一个定制化的基于HttpUrlConnection的栈,但同时也提供了与Google Volley和Square OkHttp快速集成的工具库。

虽然Glide 的主要目标是让任何形式的图片列表的滚动尽可能地变得更快、更平滑,但实际上,Glide几乎能满足你对远程图片的拉取/缩放/显示的一切需求。

Android SDK 要求

==============

最低 SDK 版本- Glide 要求最低 SDK 版本为14(Ice Cream Sandwich)或更高版本。

编译 SDK 版本- Glide 必须针对 SDK 版本27 (Oreo MR1) 或更高版本进行编译。

所需权限

====

网络加载


通过网络连接加载图像,你应该将INTERNETACCESS_NETWORK_STATE权限添加到你的AndroidManifest.xml:

本地存储


要从DCIM或图片等本地文件夹加载图像,你需要添加READ_EXTERNAL_STORAGE权限:

要将 Glide 的缓存存储在公共 sdcard 上,您需要使用 WRITE_EXTERNAL_STORAGE权限:

性能

==

Glide 充分考虑了Android图片加载性能的两个关键方面:

  • 1.图片解码速度

  • 2.解码图片带来的资源压力

为了让用户拥有良好的App使用体验,图片不仅要快速加载,而且还不能因为过多的主线程I/O或频繁的垃圾回收导致页面的闪烁和抖动现象。

Glide使用了多个步骤来确保在Android上加载图片尽可能的快速和平滑:

  • 自动、智能地下采样(downsampling)和缓存(caching),以最小化存储开销和解码次数;

  • 积极的资源重用,例如字节数组和Bitmap,以最小化昂贵的垃圾回收和堆碎片影响;

  • 深度的生命周期集成,以确保仅优先处理活跃的Fragment和Activity的请求,并有利于应用在必要时释放资源以避免在后台时被杀掉。

Glide基本用法

=========

  • with 传入的可以是当前上下文的对象。

  • load 加载图片,图片可以是本地图片,应用资源的图片也可以是一张网络图片。

  • placeholder 占位符是在请求正在进行时,显示的图片。

  • error 当请求永久失败时,会显示设置图片。

  • into 传入要展示图片的控件。

  • transform 用来完成剪裁(切圆)或对位图应用过滤器,但它也可以用于转换GIF动画,甚至自定义的资源类型。

简单使用

====

在build.gradle中添加依赖

implementation ‘com.github.bumptech.glide:glide:4.12.0’

加载图片

Uri uri = Uri.parse(“https://profile.csdnimg.cn/C/A/6/1_g984160547”);

//        String uri = “https://profile.csdnimg.cn/C/A/6/1_g984160547”;

//上面两种写法效果相同

Glide.with(this).load(uri).into(agb.ivInitial);

//应用资源

Glide.with(this).load(R.mipmap.sc1).into(agb.ivAppMipmap);

//画圆

Glide.with(this).load(uri).circleCrop().into(agb.ivCirclecrop);

//增加占位符和加载失败显示图片

Glide.with(this).load(uri).

placeholder(R.mipmap.sc1)

.error(R.mipmap.sc2)

.into(agb.ivInitial);

FutureTarget target= Glide.with(this)

.asBitmap()

.load(uri)

.submit();

new Thread(new Runnable() {

@Override

public void run() {

try {

Bitmap bitmap = target.get();//同步请求

//子线程切主线程更新UI

runOnUiThread(new Runnable() {

@Override

public void run() {

agb.ivOptions.setImageBitmap(bitmap);

}

});

} catch (Exception e) {

e.printStackTrace();

}

}

}).start();

取消加载

Glide.with(this).clear(agb.ivCirclecrop);

注意: 尽管及时取消不必要的加载是很好的实践,但这并不是必须的操作。实际上,当 Glide.with() 中传入的 Activity 或 Fragment 实例销毁时,Glide 会自动取消加载并回收资源。

Generated API

=============

Glide

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值