Android Glide

news2024/12/24 9:09:11
1.引入glide
implementation 'com.github.bumptech.glide:glide:4.14.2'
// Skip this if you don't want to use integration libraries or configure Glide.
annotationProcessor 'com.github.bumptech.glide:compiler:4.14.2'  //Glide 注解处理器
2.AndroidManifest.xml 中添加需要的权限

如果你计划从 URL 或一个网络连接中加载数据,你需要加INTERNETACCESS_NETWORK_STATE权限到你的AndroidManifest.xml中,要从本地文件夹或DCIM或图库中加载图片,你将需要添加READ_EXTERNAL_STORAGE权限。

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
3.基本使用
Glide.with([fragment/Context/View])
.load(url)
.into(imageView)
4.Glide占位符
Glide允许用户指定三种不同类型的占位符,分别在三种不同场景使用:
1.placeholder正在请求图片的时候展示的图片,当请求成功完成时,占位符会被请求到的资源替换。
2. error 如果请求失败的时候展示的图片 (如果没有设置,还是展示placeholder的占位符)
3. fallback 如果请求的url/model为 null 的时候展示的图片 (如果没有设置,还是展示placeholder的占位符)
RequestOptions requestOptions = new RequestOptions()
.placeholder(R.drawable.hold)
.error(R.drawable.error)
.fallback(R.drawable.fallback)
.override(100,100); //override指定加载图片大小


Glide.with([fragment/Context/View])
.load(url)
.apply(requestOptions)
.into(imageView);
5.过渡
Transitions定义 Glide 如何从占位符到新加载的图片,或从缩略图到全尺寸图像过渡。
Glide.with(context)
.load(URL)
.apply(requestOptions)
.transition(DrawableTransitionOptions.withCrossFade(factory))
.into((ImageView) holder.itemView);

Glide v4 将不会默认应用交叉淡入或任何其他的过渡效果。每个请求必须手动应用过渡。当待加载的图片包含透明像素时,禁用交叉淡入会导致动画完成后占位符在图片后面仍然可见。如果你在加载透明图片时使用了占位符,可以启用交叉淡入

DrawableCrossFadeFactory factory = new DrawableCrossFadeFactory.Builder().setCrossFadeEnabled(true).build();

Glide.with(context)
.load(URL)
.apply(requestOptions)
.transition(DrawableTransitionOptions.withCrossFade(factory))
.into((ImageView) holder.itemView);
为了提升性能,请在使用 Glide 向 ListView , GridView, 或 RecyclerView 加载图片时考虑避免使用动画。
6.变换
获取资源并修改它,然后返回被修改后的资源。通常变换操作是用来完成剪裁或对位图应用过滤器。比如对图片进行圆角配置。
Glide.with(this)
.load(URL)
.transform(...)
.into(iv);
1. CircleCrop :圆角
2. RoundedCorners : 四个角度统一指定
3. GranularRoundedCorners :四个角度单独指定
4. Rotate :旋转
7.Generated API

Generated API 模式的设计出于以下两个目的:
1.集成库可以为 Generated API 扩展自定义选项。
2.在 Application 模块中可将常用的选项组打包成一个选项在 Generated API 中使用


1、添加 Glide 注解处理器的依赖

2.在 Application 模块中包含一个 AppGlideModule 的实现

@GlideModule
public class MyGlideModule extends AppGlideModule {
}

3.当你第一次添加你的 AppGlideModule 或做了某些类型的修改后,你可能需要重新构建 (rebuild) 你的项目。无论何时,如果你发现 API 没有被 import ,或看起来已经过期,你可以通过以下方法重新构建:1.打开 Build 菜单;2.点击 Rebuild Project。

将 Glide.with() 替换为 GlideApp.with(),即可使用该 API 去完成加载工作。与 Glide.with() 不同,诸如 fitCenter() 和 placeholder() 等选项在 Builder 中直接可用,并不需要再传入单独的RequestOptions对象。​

GlideApp.with(fragment)
   .load(myUrl)
   .placeholder(R.drawable.placeholder)
   .fitCenter()
   .into(imageView);
8.GlideExtensionGlideOption

定义一个在频繁使用的选项集合。

@GlideExtension
public class MyAppExtension {
    private MyAppExtension() {
    }

    @GlideOption
    public static BaseRequestOptions<?> defaultImg(BaseRequestOptions<?> options){
        return options
                .placeholder(R.drawable.p1)
                .error(R.drawable.e2)
                .fallback(R.drawable.f3)
                .override(100,100);

    }
}
使用对比:
GlideApp.with().load(). error(R.drawable.error).fallback(R.drawable.fallback)
GlideApp.with().load().defaultImg()
相关说明与资料请参考
Glide v4 : 快速高效的Android图片加载库 (muyangmin.github.io)
Glide v4 : Fast and efficient image loading for Android (bumptech.github.io)
GitHub - bumptech/glide: An image loading and caching library for Android focused on smooth scrolling

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1574475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

截稿倒计时 CCF-B 推荐会议EGSR’24论文摘要4月9日提交

会议之眼 快讯 第35届EGSR 2024 (Eurographics Symposium on Rendering)即欧洲图形学渲染专题讨论会将于 2024 年 7月3日-5日在英国伦敦帝国理工学院举行&#xff01;在EGSR之前&#xff0c;将有一个全新的联合研讨会&#xff0c;即材料外观建模&#xff08;MAM&#xff09;和…

【如何写论文】解决方案——删除脚注里多余的回车换行,标题的段前磅数消失问题、图像显示不完整、被截断、浮动问题

目录 一、脚注里多余的回车换行无法删除问题1.1、问题描述1.2、解决方案 二、标题前的段前磅数消失问题2.1、问题描述2.2、解决方案 三、图像显示不完整、被截断、浮动问题3.1、问题描述3.2、解决方案 一、脚注里多余的回车换行无法删除问题 1.1、问题描述 一般论文要求需要有…

Unity Toggle组件

Toggle Group组件 Allow Switch Off属性值为false时&#xff0c; 1&#xff0c;Toggle初始时默认会有一个被勾选&#xff08;ison为true&#xff09;&#xff0c;可以自己打勾指定 2&#xff0c;不能取消勾选 Allow Switch Off属性值为true时&#xff0c; 1&#xff0c;Toggl…

无监督学习简介

无监督学习简介 一、定义和核心概念 无监督学习的定义 无监督学习是机器学习的一个关键分支&#xff0c;它涉及到从未标注数据中学习和提取信息。不同于其他学习类型&#xff0c;无监督学习的数据集没有提供任何显式的输出标签或结果。因此&#xff0c;这种学习方法的主要任务…

js计算器实现

文章目录 1. 演示效果2. 分析思路3. 代码实现 1. 演示效果 2. 分析思路 给每个按钮添加点击事件&#xff0c;使用eval()进行计算。 3. 代码实现 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&q…

数据生成 | Matlab实现基于DE差分进化算法的数据生成

数据生成 | Matlab实现基于DE差分进化算法的数据生成 目录 数据生成 | Matlab实现基于DE差分进化算法的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于DE差分进化算法的数据生成&#xff0c;运行环境Matlab2021b及以上&#xff1b; 2.计…

HubSpot如何通过自动化和优化客户服务流程,提升客户满意度和忠诚度?

HubSpot通过自动化和优化客户服务流程&#xff0c;可以有效地提升客户满意度和忠诚度。以下是HubSpot实现这一目标的几个关键步骤&#xff1a; 建立清晰的服务流程&#xff1a;首先&#xff0c;HubSpot帮助企业建立清晰、标准化的客户服务流程。这包括明确的服务阶段定义&…

Codigger Desktop:用户体验与获得收益双赢的革新之作(一)

上周&#xff0c;我们介绍了Codigger Desktop凭借其强大的功能、稳定的性能以及人性化的设计&#xff0c;成为了广大开发者的得力助手。Codigger Desktop除了是开发者的利器外&#xff0c;它以其出色的用户体验和创新的收益模式&#xff0c;为用户提供了一个全新的选择。Codigg…

【线段树】1622. 奇妙序列

本文涉及知识点 设计 数学 线段树 本文基础解法 【设计】 【数学】1622 奇妙序列 LeetCode1622. 奇妙序列 请你实现三个 API append&#xff0c;addAll 和 multAll 来实现奇妙序列。 请实现 Fancy 类 &#xff1a; Fancy() 初始化一个空序列对象。 void append(val) 将整数…

【单片机家电产品--晶闸管(可控硅)】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 单片机家电产品–晶闸管 前言 记录学习单片机家电产品内容 已转载记录为主 一、知识点 1 晶体管和晶闸管之间的区别 晶体管和晶闸管之间的区别 2 什么是可控硅&#xf…

WebKit结构揭秘:探秘网页渲染的魔法之源

一、WebKit之心&#xff1a;渲染引擎的魔力 WebKit的渲染引擎是其核心所在&#xff0c;它犹如一位技艺高超的魔法师&#xff0c;将HTML、CSS和JavaScript的魔法咒语转化为绚丽的网页画面。它解析代码&#xff0c;绘制页面&#xff0c;让网页内容跃然屏上&#xff0c;展现出无尽…

宏的使用(C语言详解)

在写一个代码生成可执行文件的过程需要经过编译和链接&#xff0c;编译又要经过三部&#xff1a;预处理&#xff0c;编译&#xff0c;汇编。 #define定义的变量和宏就是在预处理阶段会处理的。 一个简单的宏定义&#xff1a; #include<stdio.h>; #define Max(a,b) a>…

【微服务】SpringCloud之Feign远程调用

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …

Mac安装Docker提示Another application changed your Desktop configuration解决方案

1. 问题描述 Mac安装Docker后&#xff0c;提示Another application changed your Desktop configuration&#xff0c;Re-apply configurations无效 2. 解决方案 在终端执行下述命令即可解决&#xff1a; sudo ln -sf /Applications/Docker.app/Contents/Resources/bin/docke…

TLF9471 - High-Speed CAN FD Transceiver

1 框图描述 2 功能描述 CAN收发器被设计用来承受汽车应用的恶劣条件,并支持12V应用。   SBC的控制器区域网络(CAN)收发器部分在汽车和工业应用中提供高速(HS)差分模式数据传输(最高可达2Mbaud) 和接收。它作为CAN协议控制器和与ISO 11898-2:2016和SAE J2284兼容的物理…

基于单片机干湿垃圾自动分类系统

**单片机设计介绍&#xff0c;基于单片机干湿垃圾自动分类系统 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的干湿垃圾自动分类系统是一个集成传感器技术、机械控制和单片机编程于一体的自动化解决方案。该系统的主要目标是实…

MS9740B进行DUT插入损耗的评估,操作步骤?

使用MS9740B进行DUT&#xff08;设备待测&#xff09;插入损耗的评估&#xff0c;首先需要了解MS9740B的基本功能和配置。MS9740B是一款高精度光谱分析仪&#xff0c;支持多种光纤类型&#xff0c;包括SM光纤&#xff08;ITU-T G.652&#xff09;和GI光纤&#xff08;50μm/125…

【C++】C++中的list

一、介绍 官方给的 list的文档介绍 简单来说就是&#xff1a; list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中…

IO流【带有缓冲区的字节输入、输出流;字符输入、输出流 转换流】

day35 学习注意事项 按照流的发展历史去学习注意流与流之间的继承关系举一反三 IO流 继day36 字节流继承图 字节流 应用场景&#xff1a;操作二进制数据&#xff08;音频、视频、图片&#xff09; abstract class InputStream – 字节输入流的基类&#xff08;抽象类&#xff0…

1、认识MySQL存储引擎吗?

目录 1、MySQL存储引擎有哪些&#xff1f; 2、默认的存储引擎是哪个&#xff1f; 3、InnoDB和MyISAM有什么区别吗&#xff1f; 3.1、关于事务 3.2、关于行级锁 3.3、关于外键支持 3.4、关于是否支持MVCC 3.5、关于数据安全恢复 3.6、关于索引 3.7、关于性能 4、如何…