首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏深入理解Android

    深入理解Glide(1)——Glide的使用

    引入Glide 在项目中引入Glide方式十分方便,首先在在project层级下的build.gradle添加如下内容: repositories { mavenCentral() google () } 其次在app层级下的build.gradle添加如下内容: dependencies { implementation 'com.github.bumptech.glide:glide 显示GIF Glide的强大之处在于除了加载图片之外,还可以加载GIF Glide.with(this).asGif().load(url).into(imageView); 如上代码即可展示GIF 图片转换 我们可以在Glide将图片加载到ImageView显示之前进行一些操作,比如实现圆角化、圆形化、模糊化等等,Glide内置了一些转换的API RequestOptions options = Glide还有很多使用方式,感兴趣的读者可以在github上去了解。

    1.2K40编辑于 2022-06-22
  • 来自专栏移动开发面面观

    Glide缓存探密Glide的缓存策略

    Glide在缓存策略上,花费了很多心思,从而使得其在加载图片过程中,对内存的使用量非常小。 本文将分享Glide在缓存策略上使用的技巧。 Glide的策略是从源头上,区分正在显示和没有显示的Bitmap。Glide将内存分为两块儿:ActiveCache和MemoryCache。 监听生命周期 Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView); 这是Glide的典型用法。 同理,Glide对于生命周期的监听也是采用了这种方式。 是Glide缓存策略的精妙之处。 如有问题,欢迎指正。

    1.5K21发布于 2018-07-03
  • 来自专栏Android开发指南

    Glide优化

    几乎所有的 OOM 错误都是因为宿主应用出了问题,而不是 Glide 本身。 升级到Glide4.0,使用asDrawable代替asBitmap,drawable更省内存。 onTrimMemory,调用 Glide.cleanMemroy() 清理掉所有的内存缓存。 使用它要比glide加载GIF效果效果要好,glide加载加载GIF图片CPU占用高,并且内存占用一直在增加。 glide, @NonNull Registry registry) { super.registerComponents(context, glide, registry);

    2.6K51发布于 2020-03-27
  • 来自专栏刘晓杰

    源码阅读--Glide

    1.用法及参考资料 参考资料:http://www.apkbus.com/blog-705730-60158.html 用法: Glide.with(this).load("https://timgsa.baidu.com return Glide.get(context).getRequestManagerRetriever();//-----------------------get函数中有对Glide的初始化initGlide glide = builder.build(applicationContext);//-----------------------------建造者模式生成glide 。。。。。。 Glide glide = Glide.get(context); applicationManager = factory.build(glide, new ApplicationLifecycle Glide glide = Glide.get(context); requestManager = factory.build(glide

    72720发布于 2019-02-21
  • 来自专栏曾大稳的博客

    Glide v3.7源码分析(1)-----Glide.with()

    Glide.with() public static RequestManager with(FragmentActivity activity) { //单例拿到一个RequestManagerRetriever RequestManagerTreeNode treeNode; private final RequestTracker requestTracker; private final Glide glide; private final OptionsApplier optionsApplier; private DefaultOptions options; //RequestManager lifecycle; this.treeNode = treeNode; this.requestTracker = requestTracker; this.glide = Glide.get(context); this.optionsApplier = new OptionsApplier(); ConnectivityMonitor

    61910发布于 2018-09-11
  • 来自专栏vivo互联网技术

    Glide缓存流程

    互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/cPLkefpEb3w12-uoiqzTig 作者:连凌能 Android上图片加载的解决方案有多种,但是官方认可的是Glide Glide提供简洁易用的api,整个框架也方便扩展,比如可以替换网络请求库,同时也提供了完备的缓存机制,应用层不需要自己去管理图片的缓存与获取,框架会分成内存缓存,文件缓存和远程缓存。 一、综述 开始之前,关于Glide缓存请先思考几个问题: Glide有几级缓存? Glide内存缓存之间是什么关系? Glide本地文件IO和网络请求是一个线程吗?如果不是,怎么实现线程切换? Glide网络请求回来后数据直接返回给用户还是先存再返回? 3、Glide本地文件IO和网络请求是一个线程吗?

    1.8K20发布于 2019-10-14
  • 来自专栏刘晓杰

    Glide缓存机制

    1.LinkedHashMap——http://blog.csdn.net/lxj1137800599/article/details/54976180 2.cleanupCallable(涉及到ThreadPoolExecutor——http://blog.csdn.net/lxj1137800599/article/details/55808019) private final Callable<Void> cleanupCallable = new Callable<Void>() {

    1.3K110发布于 2018-05-18
  • 来自专栏俞其荣的博客

    Glide源码解析(二)

    之前已经讲过 Glide.with 了,那么今天就来讲讲 load 方法。 Glide : https://github.com/bumptech/glide version : v4.9.0 源码解析 load 重载的方法有很多,这里就挑一个看了。 ) @SuppressWarnings("PMD.ConstructorCallsOverridableMethod") protected RequestBuilder( @NonNull Glide glide, RequestManager requestManager, Class<TranscodeType> transcodeClass, Context context ) { this.glide = glide; this.requestManager = requestManager; this.transcodeClass = transcodeClass

    57420发布于 2021-11-24
  • 来自专栏Android群英传

    Glide ‘优’ 与 ‘愁’

    为什么会选择 Glide 为什么选择 Glide ,前言中也提到了 毕竟是 Google 推荐的最佳选择。 所以 Glide 胜出。 Glide VS fresco 两个都支持 GIF。所以 GIF 这一关pass掉。 所以需要对NDK有所了解,但个人对NDK不太了解,相比较于 Glide, 同样遇到问题之后,修改源码的成本,Glide 成本更可控。前者可能就不太好下手了的。 综上所述,Glide 依旧胜出。 Glide 是如何解决图片加载生命周期的?(精髓之一)(也是bug高发地带) 当一个界面离开之后,我们更希望当前的图片取消加载,那么 Glide 是怎么做到的呢? 具体源码中可以看到这里: https://github.com/bumptech/glide/blob/master/library/src/main/java/com/bumptech/glide/Glide.java

    1.1K10发布于 2018-07-20
  • 来自专栏Jack的Android之旅

    Glide源码之缓存机制Glide源码之缓存机制

    在上一篇文章中,我们简要的讲了Glide加载一张网络图片的基本流程,整个流程有点长,也有点多,很多东西没有细讲。所以会对Glide一些重要的东西单独写文章讲解,以便大家对Glide细节了解更深。 Glide缓存设计 Glide分成内存缓存和磁盘缓存两个: 内存缓存:基于基于弱引用和LruCache(先看弱引用有无缓存,再看LruCache有无缓存) 磁盘缓存:基于DiskLruCache进行封装 小结: Glide中首先会读取转换后的图片的缓存,然后再读取原始图片的缓存。但是存储的时候恰恰相反,首先存储的是原始图片的缓存,再存储转换后的图片。

    1.7K20发布于 2021-11-24
  • 来自专栏移动开发专栏

    Glide、Picasso和Fresco

    Glide、Picasso和Fresco都是目前Android图片加载的主流框架。 Glide与Picasso使用方式及其相似,都是链式一行代码即可搞定。 一、Glide compile 'com.github.bumptech.glide:glide:3.7.0' 加上v4包 Glide.with(this).load("http://goo.gl/ 2.Glide加载的图片质量要差于Picasso,但几乎难以分辨,而且Glide的加载速度更快,但也需要更大的空间来缓存。 Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的。 4.Glide可以加载GIF动态图,而Picasso不能。 5.Picasso (v2.5.1)的大小约118kb,而Glide (v3.5.2)的大小约430kb。 6.Picasso和Glide的方法个数分别是840和2678个。

    88820编辑于 2022-06-10
  • 来自专栏俞其荣的博客

    Glide源码解析(一)

    那么本系列给大家带来的就是解析 Glide 的源码,看看背后的 Glide 是什么样子的? Glide : https://github.com/bumptech/glide version : v4.9.0 Glide使用方法 Glide 的 API 有很多,但是我们这里就挑最简单的讲: Glide.with Glide glide = Glide.get(context.getApplicationContext()); applicationManager = factory.build Glide glide = Glide.get(context); requestManager = factory.build( glide, current.getGlideLifecycle 结束语 综上所述,Glide.with 中,主要做的事情有两件: Glide 单例的初始化过程 Glide 请求的生命周期管理 如果传入的是 ApplicationContext ,得到的就是 applicationManager

    1.2K20发布于 2019-08-12
  • 来自专栏俞其荣的博客

    Glide源码解析(三)

    本篇是 Glide 系列的最后一篇,主要讲一下 into 方法里面的逻辑。into 的逻辑也是最多最复杂的,可能需要反复阅读源码才能搞清楚。 Glide : https://github.com/bumptech/glide version : v4.9.0 RequestBuilder @NonNull public <Y extends 也就是说,当我们从网络中拿到了数据之后 Glide 会先将其缓存到磁盘上面,然后再从磁盘上面读取图片并将其显示到控件上面。 到了这里, Glide 所有加载图片、处理图片的逻辑都讲完了。剩下的,就是将图片显示到 ImageView 上面了。 相信你看完这一系列的文章,对 Glide 会刮目相看吧。 当然,本系列还有很多 Glide 中没讲到的知识点,比如缓存具体的应用等,如果想了解的同学可以自行去阅读下源码。

    1.6K30发布于 2019-08-12
  • 来自专栏干活分享

    Glide源码分析(一)

    Glide作为一个图片加载框架深受开发者喜欢,包体积小,加载速度快,以及加载圆角等。作为一名开发者我们有必要去了解Glide图片加载机制,它是如何把图片加载出来的?以及在图片加载过程中它都做了什么? ComponentCallbacks2 { /** * 单利模式获取Glide对象 */ @NonNull public static Glide get(@NonNull Context context) { if (glide == null) { synchronized (Glide.class) { if (glide == null) { 对象 Glide glide = builder.build(applicationContext); // 5. ); // 6.保存为静态常量 Glide.glide = glide; } 在initializeGlide()方法中获取 @GlideModule 注解生成类,然后获取到获取

    1.7K30发布于 2020-07-09
  • 来自专栏哈利迪ei

    Android | Glide细枝篇

    《看完不忘系列》之Glide (树干篇)一文对Glide加载图片的核心流程做了介绍,细枝篇作为补充,将对一些具体实现细节进行深入。 glide, Registry registry) { super.registerComponents(context, glide, registry); //注册一些定制的能力 ,会包一个中间层来进行隔离(禁止业务层用到Glide的任何类),以便随时可以升级替换,这个中间层就可以根据需要来自行扩展。 glide, Lifecycle lifecycle, //... 即,我们要有这样的意识,既然使用了Glide,就不要再关心Bitmap的事情了,全盘交由BitmapPool管理即可。

    1K10发布于 2020-08-10
  • 来自专栏俞其荣的博客

    Glide源码解析(一)

    那么本系列给大家带来的就是解析 Glide 的源码,看看背后的 Glide 是什么样子的? Glide : https://github.com/bumptech/glide version : v4.9.0 Glide使用方法 Glide 的 API 有很多,但是我们这里就挑最简单的讲: Glide.with Glide glide = Glide.get(context.getApplicationContext()); applicationManager = factory.build Glide glide = Glide.get(context); requestManager = factory.build( glide, current.getGlideLifecycle 结束语 综上所述,Glide.with 中,主要做的事情有两件: Glide 单例的初始化过程 Glide 请求的生命周期管理 如果传入的是 ApplicationContext ,得到的就是 applicationManager

    65820发布于 2021-11-24
  • 来自专栏俞其荣的博客

    Glide源码解析(二)

    之前已经讲过 Glide.with 了,那么今天就来讲讲 load 方法。 Glide : https://github.com/bumptech/glide version : v4.9.0 源码解析 load 重载的方法有很多,这里就挑一个看了。 ) @SuppressWarnings("PMD.ConstructorCallsOverridableMethod") protected RequestBuilder( @NonNull Glide glide, RequestManager requestManager, Class<TranscodeType> transcodeClass, Context context ) { this.glide = glide; this.requestManager = requestManager; this.transcodeClass = transcodeClass

    86520发布于 2019-08-12
  • 来自专栏深入理解Android

    深入解析Glide源码

    Glide 是 Google的开源项目, Glide具有获取、解码和展示视频剧照、图片、动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里。 创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。本篇博客,我们一起深入分析Glide的源码。 总体设计 with方法 首先我们来看一下glide的一般使用方法 Glide.with(this) .load("http://image.baidu.com/search/detail a registered ModelLoader, if you are using a custom model, you must first call" + " Glide Unable to load null model, setting placeholder only"); } return null; } return Glide.get

    1.1K30编辑于 2022-06-22
  • 来自专栏木子杂志

    Glide 缓存总结(一)

    Glide的缓存机制 主要分为2种缓存,一种是内存缓存,一种是磁盘缓存 三级缓存原理 加载一张图片的时候,获取顺序: Lru算法缓存 【--->】 弱引用缓存 【--->】 磁盘缓存 源码解析如下: public                activeResources.remove(ref.key);           }            return true;       }   }         } Glide final ExecutorService diskCacheService;    private final ExecutorService sourceService;     } 一张图片加载的流程 Glide

    1.3K50发布于 2020-08-06
  • 来自专栏编程

    项目中如何快速将Glide3替换成Glide4

    我想大多数人在自己的项目中还是使用Glide3.7.1这个版本吧!不过Glide版本现在已经到4.4.0了! 当我们把Glide3更换成Glide4,会发现大部分地方都报错了,那么该怎样快速替换Glide3为Glide4呢? 下面我们一起来看看怎样实现Glide3到Glide4的快速替换。 Glide4的基本用法: 引入Glide compiler:包含各种注解的使用,Glide3快速替换成Glide4时要用到。 Glide使用,这样我们就可以很方便的在需要的地方可以进行不同的配置了,不用像Glide3一样传递很多参数! Glide3替换成Glide4(Generated API) 在自定义模块完成以后,就可以使用Glide的模式啦!

    1.5K60发布于 2018-01-29
领券