Android Glide框架

获取依赖aar包的两种方式-在android studio里引入 如:glide 背景:我需要获取aar依赖到内网开发,内网几乎代表没网。方式一:在官方的github中下载 方式二:通过android studio 的gradle 编译工具下载 阅读详情

Android Glide框架

在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。

它的成功让我非常感兴趣。我花了一整晚的时间把玩,决定分享一些自己的经验。在开始之前我想说,Glide和Picasso有90%的相似度,准确的说,就是Picasso的克隆版本。但是在细节上还是有不少区别的。

使用

简单使用:
Glide
    .with(this)
    .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
    .into(imageView);
 
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
Glide.with()使用
  1. with(Context context). 使用Application上下文,Glide请求将不受Activity/Fragment生命周期控制。
  2. with(Activity activity).使用Activity作为上下文,Glide的请求会受到Activity生命周期控制。
  3. with(FragmentActivity activity).Glide的请求会受到FragmentActivity生命周期控制。
  4. with(android.app.Fragment fragment).Glide的请求会受到Fragment 生命周期控制。
  5. with(android.support.v4.app.Fragment fragment).Glide的请求会受到Fragment生命周期控制。

返回关联了相应上下文的RequestManager实例。

requestManager.load()使用

Glide基本可以load任何可以拿到的媒体资源,如: 
load SD卡资源:load("file://"+ Environment.getExternalStorageDirectory().getPath()+"/test.jpg") 
load assets资源:load("file:///android_asset/f003.gif") 
load raw资源:load("Android.resource://com.frank.glide/raw/raw_1")或load("android.resource://com.frank.glide/raw/"+R.raw.raw_1) 
load drawable资源:load("android.resource://com.frank.glide/drawable/news")或load("android.resource://com.frank.glide/drawable/"+R.drawable.news) 
load ContentProvider资源:load("content://media/external/images/media/139469") 
load http资源:load("https://img-my.youkuaiyun.com/uploads/201508/05/1438760757_3588.jpg") 
load https资源:load("https://img.alicdn.com/tps/TB1uyhoMpXXXXcLXVXXXXXXXXXX-476-538.jpg_240x5000q50.jpg_.webp") 
当然,load不限于String类型,还可以: 
load(Uri uri),load(File file),load(Integer resourceId),load(URL url),load(byte[] model),load(T model),loadFromMediaStore(Uri uri)。 
load的资源也可以是本地视频,如果想要load网络视频或更高级的操作可以使用VideoView等其它控件完成。 
而且可以使用自己的ModelLoader进行资源加载: 
using(ModelLoader<A, T> modelLoader, Class<T> dataClass),using(final StreamModelLoader<T> modelLoader),using(StreamByteArrayLoader modelLoader),using(final FileDescriptorModelLoader<T> modelLoader)。 
返回GenericRequestBuilder实例。

GenericRequestBuilder使用

GenericRequestBuilder<ModelType,DataType,ResourceType,TranscodeType>是最顶层的Request Builder,用于处理选项设置和开始一般resource类型资源的加载。其中ModelType是指代表资源的类型,如"https://img-my.youkuaiyun.com/uploads/201508/05/1438760757_3588.jpg"这个String就代表了一张图片资源,所以这个ModelType就是String。DataType是指ModelLoader提供的,可以被ResourceDecoder解码的数据类型。ResourceType是指将要加载的resource类型。TranscodeType是指已解码的资源将要被转成的资源类型。

  1. thumbnail(float sizeMultiplier). 请求给定系数的缩略图。如果缩略图比全尺寸图先加载完,就显示缩略图,否则就不显示。系数sizeMultiplier必须在(0,1)之间,可以递归调用该方法。
  2. sizeMultiplier(float sizeMultiplier). 在加载资源之前给Target大小设置系数。
  3. diskCacheStrategy(DiskCacheStrategy strategy).设置缓存策略。DiskCacheStrategy.SOURCE:缓存原始数据,DiskCacheStrategy.RESULT:缓存变换(如缩放、裁剪等)后的资源数据,DiskCacheStrategy.NONE:什么都不缓存,DiskCacheStrategy.ALL:缓存SOURC和RESULT。默认采用DiskCacheStrategy.RESULT策略,对于download only操作要使用DiskCacheStrategy.SOURCE。
  4. priority(Priority priority). 指定加载的优先级,优先级越高越优先加载,但不保证所有图片都按序加载。枚举Priority.IMMEDIATE,Priority.HIGH,Priority.NORMAL,Priority.LOW。默认为Priority.NORMAL。
  5. dontAnimate(). 移除所有的动画。
  6. animate(int animationId). 在异步加载资源完成时会执行该动画。
  7. animate(ViewPropertyAnimation.Animator animator). 在异步加载资源完成时会执行该动画。
  8. placeholder(int resourceId). 设置资源加载过程中的占位Drawable。
  9. placeholder(Drawable drawable). 设置资源加载过程中的占位Drawable。
  10. fallback(int resourceId). 设置model为空时要显示的Drawable。如果没设置fallback,model为空时将显示error的Drawable,如果error的Drawable也没设置,就显示placeholder的Drawable。
  11. fallback(Drawable drawable).设置model为空时显示的Drawable。
  12. error(int resourceId).设置load失败时显示的Drawable。
  13. error(Drawable drawable).设置load失败时显示的Drawable。
  14. listener(RequestListener<? super ModelType, TranscodeType> requestListener). 监听资源加载的请求状态,可以使用两个回调:onResourceReady(R resource, T model, Target<R> target, boolean isFromMemoryCache, boolean isFirstResource)和onException(Exception e, T model, Target&lt;R&gt; target, boolean isFirstResource),但不要每次请求都使用新的监听器,要避免不必要的内存申请,可以使用单例进行统一的异常监听和处理。
  15. skipMemoryCache(boolean skip). 设置是否跳过内存缓存,但不保证一定不被缓存(比如请求已经在加载资源且没设置跳过内存缓存,这个资源就会被缓存在内存中)。
  16. override(int width, int height). 重新设置Target的宽高值(单位为pixel)。
  17. into(Y target).设置资源将被加载到的Target。
  18. into(ImageView view). 设置资源将被加载到的ImageView。取消该ImageView之前所有的加载并释放资源。
  19. into(int width, int height). 后台线程加载时要加载资源的宽高值(单位为pixel)。
  20. preload(int width, int height). 预加载resource到缓存中(单位为pixel)。
  21. asBitmap(). 无论资源是不是gif动画,都作为Bitmap对待。如果是gif动画会停在第一帧。
  22. asGif().把资源作为GifDrawable对待。如果资源不是gif动画将会失败,会回调.error()。
技巧:
  1. 禁止内存缓存:

        .skipMemoryCache(true)
       
    • 1
    • 1
  2. 清除内存缓存:

        // 必须在UI线程中调用
        Glide.get(context).clearMemory();
       
    • 1
    • 2
    • 1
    • 2
  3. 禁止磁盘缓存:

       .diskCacheStrategy(DiskCacheStrategy.NONE)
       
    • 1
    • 1
  4. 清除磁盘缓存:

       // 必须在后台线程中调用,建议同时clearMemory()
       Glide.get(applicationContext).clearDiskCache();
       
    • 1
    • 2
    • 1
    • 2
  5. 获取缓存大小:

       new GetDiskCacheSizeTask(textView).execute(new File(getCacheDir(), DiskCache.Factory.DEFAULT_DISK_CACHE_DIR));
  6. 指定资源的优先加载顺序:

        //优先加载
        Glide
            .with(context)
            .load(heroImageUrl)
            .priority(Priority.HIGH)
            .into(imageViewHero);
        //后加载
        Glide
            .with(context)
            .load(itemImageUrl)
            .priority(Priority.LOW)
            .into(imageViewItem);
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
  7. 先显示缩略图,再显示原图:

        //用原图的1/10作为缩略图
        Glide
            .with(this)
            .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
            .thumbnail(0.1f)
            .into(iv_0);
        //用其它图片作为缩略图
        DrawableRequestBuilder<Integer> thumbnailRequest = Glide
            .with(this)
            .load(R.drawable.news);
        Glide.with(this)
            .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
            .thumbnail(thumbnailRequest)
            .into(iv_0);
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  8. 对图片进行裁剪、模糊、滤镜等处理: 
    推荐使用独立的图片处理库:wasabeef/glide-transformations,使用也很简单:

        compile 'jp.wasabeef:glide-transformations:2.0.0'
       
    • 1
    • 1

    之后我们就可以使用GenericRequestBuilder或其子类的transform()或bitmapTransform()方法设置图片转换了:

        //圆形裁剪
        Glide.with(this)
            .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
            .bitmapTransform(new CropCircleTransformation(this))
            .into(iv_0);
        //圆角处理
        Glide.with(this)
            .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
            .bitmapTransform(new RoundedCornersTransformation(this,30,0, RoundedCornersTransformation.CornerType.ALL))
            .into(iv_0);
        //灰度处理
        Glide.with(this)
            .load("http://inthecheesefactory.com/uploads/source/nestedfragment/fragments.png")
            .bitmapTransform(new GrayscaleTransformation(this))
            .into(iv_0)
    

Android图片加载框架Glide 解析 本文是阅读郭大神的八篇Android图片加载框架最全解析后,根据自己的理解做的笔记,本篇基于 Glide3.7.0讲解。 一、Glide简介 Glide是一款由Bump Technologies开发的图片加载框架,使得我们可以在Android平台上以极度简单的方式加载和展示图片。 二、Glide的基本用法 Glide.with(this) .load(url) .asBitmap() //加载静态图 .placeholder(R.drawable.loading)//加载过程中的占位图 .er 阅读详情

相关推荐

Android 图片加载框架 Glide 详细介绍

内存缓存:用于存储已经加载的图片数据,以避免重复读取内存中的数据。这可以显著提高图片显示的速度,因为内存的访问速度远快于从硬盘或网络加载数据。硬盘缓存:用于存储从网络或其他来源下载的图片数据,以防止重复下载。这不仅可以节省带宽,还能提高应用的响应速度,尤其是在网络条件不佳时。

编程小鹏的博客 1384

android 获取apk的版本信息

今天,简单讲讲android如何获取apk的版本信息。 这个很简单,但是之前还是查找了资料,所以记录一下。 一、应用程序得到自己的版本信息 /** * 得到当前应用版本名称的方法 * * @param context * :上下文 * @throws Exception */

谢岩的博客 1万+

Glide框架在Android中加载GIF图片的全面指南

Glide是一个开源的图片加载和缓存库,主要用于Android开发。其设计目标是简化图片加载流程,通过直观的API和灵活的拓展性,帮助开发者高效、高质量地处理图片资源。在处理大量或高清晰度的图片时,一个合适的缓存策略至关重要。这不仅可以提升用户体验,还能有效降低网络使用率和服务器负载。在Glide中,我们可以对内存缓存和磁盘缓存进行定制,以适应不同的需求。在使用Glide的过程中,可能会遇到一些常见的问题和挑战。下面列举了一些常见的问题及其解决方案:图片加载失败问题。

weixin_35696112的博客 1202

Idea编译报错:Could not download glide.aar

今天glide里面依赖了第三方库: com.github.bumptech.glide:glide:4.5.0 结果报错: 试了很多方法都不管用.... 最后通过下面的方式修改gradle的配置终于下载glide成功,运行成功! 如果还不成功,检查一下build.gradle的配置。 allprojects { repositories { googl...

a_yue10的博客 5742

Glide最新4.7.1

里面包含最新glide4.7.1的aar和jar包,有需要的话可以直接下载或者私信即可。

Glide最新jar包下载

一个牛逼的图片加载库,支持gif图片的加载,包含Glide的使用介绍和相关的技术(中英)文档

android cordova aar jar包 插件开发 如何兼容旧版android版

最近要集成 交通部的定位SDK,鉴于公司准备使用ionic进行开发,于是考虑对该SDK 进行插件封装。 cordova的android插件本质上使用的还是android,只是提供的是js的调用方法。 1 先来讲讲正常的插件开发流程 包含.aar,以下部分来自网络 如何建立一个全新的插件?引入一篇文章吧 https://www.cnblogs.com/VoiceOfDreams/p/11073447.html 网上很多教程了,大家可以参考。上面这篇文章讲述的是最基本的插件的内容。 2 那么如果要包含.aar或

u013457274的博客 594

C#创建COM组件,QT调用COM组件简单测试(VS2008+QT4.6.4)

一. C#创建组件: 1. VS2008新建一个项目,选择Visual C#, Class library 修改Properties下面的AssemblyInfo.cs文件,ComVisible属性设置为True,即:[assembly: ComVisible(true)] 2. 右击项目,选择“属性”, 选择“生成”选项卡,把“为COM互操作注册”勾选上 选择“签名”选项卡,把“

3517

Glide使用详解(一)

Glide使用 Glide使用教程 Glide详解 Android图片加载 一. 下载在build.gradle中添加依赖: compile 'com.github.bumptech.glide:glide:3.7.0'需要support-v4库的支持,如果你的项目没有support-v4库(项目默认已经添加了),还需要添加s

商明超的专栏 16万+

Zephyr RTOS -- 学习笔记总述

文章目录摘要1. 开发基础部分2. 内核服务入门 本笔记基于 Zephyr 版本 2.6.0-rc2 摘要 1. 开发基础部分 2. 内核服务入门 2.1 线程简介 2.2 线程 2.3 工作队列线程 2.4 调度 2.5 中断 2.6 轮询 API 2.7 信号量

思想给了我们太多的自由,而我们拖累了思想...... 4824

LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置)

本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。

pz890123456的博客 2586

(十五)安卓JSON解析与图片加载框架Glide

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于网络通信和数据存储。在安卓应用中,JSON解析是实现与服务器通信和数据处理的重要部分。本文将介绍JSON的基础知识、在安卓平台上的解析方法、常见的解析库以及一些实践示例,帮助你全面掌握安卓JSON解析技术。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。使用和接口,自定义对象的序列化和反序列化过程。掌握JSON解析技术是开发高效安卓应用的关键。

小新的博客 1031

飞行器坐标转换

本文定义的是右手直角坐标系,x−y−zx-y-zx−y−z轴分别为北-天-东。从AAA坐标系到BBB坐标系是分别绕y−z−xy-z-xy−z−x轴,即天-东-北旋转ψ−θ−γψ−θ−γ。如果AAA是惯性系,BBB是机体系,则这三个角度分别为偏航角、俯仰角、横滚角。图1 惯性系到机体系。

gongfuyd的博客 1354

Android之Glide框架

今天推荐一个框架Glide Glide是一个谷歌推荐的强大的图片加载框架,支持三种类型的资源: 视频,图片,动画GIF,对其进行获取,解码,显示操作。 Glide拥有灵活的API,允许开发人员自定义添加网络堆栈(Network stack)。 Glide默认使用HttpUrlConnection的网络堆栈,也可以使用Google的Volley库和Squareas的OkHttp库来替代...

qq_42107430的博客 502

YOLOv11【第三章:高阶应用与落地篇·第7节】多任务联合训练(Multi-Task Learning):检测+分割+关键点三头并进!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 726

Simulink仿真入门到精通(三) Simulink信号

本系列教程是根据孙忠潇编著的<<Simulink仿真及代码生成技术入门到精通>>学习笔记。 目录 Simulink仿真入门到精通(一) Simulink界面介绍 Simulink仿真入门到精通(二) Simulink模块 Simulink仿真入门到精通(三) Simulink信号 Simulink仿真入门到精通(四) Simulink子系统 Simulink仿真入门到精通(五) Simulink模型的仿真 Simulink仿真入门到精通(六) Simulink模型保存为图片 Sim

king110108的专栏 5395

Android图片加载框架Glide的基本用法

Android图片加载框架Glide的基本用法

moon2000boy的博客 503

Python DEAP 库深度解析:从基础架构到高级应用

DEAP 是一个基于 Python 的开源框架,专门用于实现和运行各种进化算法,旨在帮助用户轻松地构建和调整进化算法,用于解决各种优化和搜索问题。本节中,介绍了 DEAP 相较于其它进化计算框架的优势,以及 DEAP 中重要的工具 creator 和 Toolbox。

盼小辉丶的博客 5064

Android 图片加载框架:Picasso vs Glide

在 Android 开发中,图片加载是移动应用的核心功能之一。合理选择图片加载框架不仅能提升用户体验,还能优化内存管理和应用性能。本文将深入对比 Picasso 和 Glide 两大主流框架,结合代码示例分析它们的差异、工作原理及优化策略。从上述代码可以看出,二者基本的图片加载方式都是链式调用,语法较为相似。Picasso 只缓存全尺寸图片,以下是简单使用示例。Glide 支持按尺寸缓存,并且可以自定义缓存策略。表示同时缓存原始图片和处理后的图片。获取实例,Glide 使用。在上述 Glide 代码中,

2301_80329517的博客 1736

GEE初学:谷歌地球引擎GEE入门指南(最新注册全流程)

本教程详细介绍了谷歌地球引擎(GEE)的注册与基础操作流程。主要内容包括:1)非商业账号注册步骤,需提供学术机构凭证和研究目的;2)Google Cloud项目创建与API激活;3)Shapefile文件上传方法及资源ID获取;4)JavaScript脚本编写与地图可视化实现。教程通过代码示例展示了两种多边形显示方式(填充和轮廓模式),并强调了GEE的云端处理优势,包括免费访问40多年卫星数据、无需本地高性能硬件等特点。整个流程从账号注册到首个地图可视化完成约需10-15分钟,适合遥感分析初学者快速入门。

此星光明博客 2138

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android万能的图片加载框架(Glide、Fresco、Picasso)

做安卓开发中加载图片是一个很常用的功能,但是如果没写好的话,很容易产生OOM,这里介绍几个好用的开源的图片加载框架。 第一个是Glide,Glide一般是配合PhotoView来使用的,轻松实现图片放大、缩小和双击放大等功能。具体的用法我就不再重复写了,这里推荐几个博客,写得很详细,看完就明白了。 http://mrfu.me/2016/02/27/Glide_Getting_Started/

从事移动开发八年,csdn博客专家,阿里云特邀专家,华为云云享专家,高级网络信息安全工程师,大数据工程师(高级),python技术开发(高级),HarmonyOS 应用开发者高级认证,现在某学校任教。 8065

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Android Glide 图片加载框架解析

在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载框架,作者是  bumpth,这个库被广泛的应用在 Google 开源项目中,包括2014年 Google I/O大会上发布的官方 App,现在在 Android 开发中已经有非常多的图片类的加载框架库,有前几年非常流行的 ImageLoader,以及现在的 Picasso、Fresco 等一些非常稳定和流行的框架,并且

QDJdeveloper 1918

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Android图片加载框架,Glide的简单用法

Glide是一款由Bump Technologies开发的图片加载框架,使我们可以在Android平台上以极度简单的方式加载和展示图片。要想使用Glide,必须将这个库引入我们的项目中,对于Android Studio用户,要导入一下依赖: compile 'com.github.bumptech.glide:glide:3.7.0' 如果你还在使用Eclipse,那就去下载Glide的ja

染小诺的博客 719

安卓多媒体开发:图片加载框架 Glide 与 Picasso 全面解析

在移动应用开发中,图片加载是核心功能之一。无论是社交应用的头像展示、电商应用的商品图片,还是新闻应用的配图,都需要高效、稳定的图片加载方案。Android 系统原生的图片加载方式存在诸多痛点(如 OOM、缓存管理复杂等),因此开发者通常会选择成熟的第三方框架。本文将详细对比当前主流的两个图片加载框架 ——Glide 和 Picasso,分析它们的核心特性、使用方法、性能差异及适用场景。Android 原生通过或加载图片时,存在以下问题:Glide 和 Picasso 作为主流图片加载框架,解决了上述问题:G

2501_93564530的博客 1520

Android图片加载框架Glide用法

https://www.cnblogs.com/guilin-hu/p/5706916.html

LI_YU_优快云的博客 360

Android图片加载框架 Glide全面解析

Glide 是 Android 平台最主流的图片加载与缓存框架,核心目标是:高效、安全、与生命周期强绑定地加载图片。专门解决 Android 系统中图片加载的各种痛点(比如内存溢出、加载慢、缓存管理复杂等),也是 Google 官方推荐的图片加载方案。

. 1311
上一篇: Android 极光推送
下一篇: Android 自定义CheckBox复选框
Android开发-CXY
博客等级 码龄10年 33粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值