Glide
薛瑄
大道至简
展开
-
深入分析Glide源码
前言最近研究了一下Glide源码,发现很多地方写的真的很精妙,值得细细品味。Glide 功能丰富,图片三级缓存、可深度定制(继承AppGlideModule、LibraryGlideModule实现更多功能)、修改网络请求库、支持多种输入输出资源的转换(例如输入Stream,输出bitmap等等)、生命周期的管理虽然下面分析完了,整体的流程,但是想要真正领会设计思想,还需要好好沉淀一下。文章篇幅比较长,但逻辑并不复杂一、基本使用流程Glide最基本的使用流程就是下面这行代码,其它所有扩展的额外功能都原创 2020-08-01 17:43:42 · 5751 阅读 · 3 评论 -
Glide 入门到精通之十五 ——用 Glide Module 自定义 Glide
Glide ModulesGlide module 是一个抽象方法,全局改变 Glide 行为的一个方式。如果你需要访问 GlideBuilder,它要在你要做的地方创建 Glide 实例,这是要做的一种方法。为了定制 Glide,你需要去实现一个 GlideModule 接口的公共类。public class SimpleGlideModule implements GlideModule {转载 2016-03-24 11:40:06 · 5846 阅读 · 0 评论 -
Glide 入门到精通之十六——Module 实例:接受自签名证书的 HTTPS
用 GlideModule 修改 Glide在继续阅读前,请确保你已经阅读并理解了之前的博客 关于 GlideModule 的。我们不会在这个博客中继续说它的基础知识。相反,我们要跳过这个问题。所以确保你已经更新了你的 GlideModule 的基础知识。你已经知道 GlideModule 提供给你两个方法去改变行为。上周,我们看了第一个方法 applyOptions()。这周我们会用另外一个方法转载 2016-03-24 14:41:49 · 2452 阅读 · 1 评论 -
Glide 入门到精通之十七——Module 实例:自定义缓存
自定义内存缓存希望你已经读了 caching basics 和 Glide modules 博客。否则,看下面的代码对你来说可能像魔术一般了。如果你读过了,那就继续读下去。好吧,既然是定制 Glide,我们就需要创建一个新的 Glide module。就如你在以前博客中看到的那样,applyOptions 方法使我们获取了 GlideBuilder 对象。该 GlideBuilder 为我们提供了几转载 2016-03-24 15:09:31 · 2164 阅读 · 0 评论 -
Glide 入门到精通之十八——Module 实例:用自定义尺寸优化加载的图片
http://mrfu.me/2016/02/28/Glide_Module_Example_Optimizing/为何要在指定的尺寸下请求图片在一个最近的项目中我们与一个多媒体服务端工作,它也是图片服务端,提供了非常高的图像质量(图像可能有 6000x4500 像素)。虽然我们可以直接用链接去拿源文件,但这对于设备的带宽,内存和电池来说,这么做是非常低效的。即使今天的设备有着非常高的分辨率显示屏,转载 2016-03-24 16:02:57 · 2712 阅读 · 3 评论 -
Glide 入门到精通之十九——动态使用 Model Loader
提示:如果你还没读过我们之前的博客,现在去读一下。否则,下面这部分看起来很困难。作为一个简短的回顾:通常 Glide 的请求是和 GlideUrl 类来使用的。上周我们已经向你展示了如何创建一个新的接口,来考虑增加宽度和高度。public interface CustomImageSizeModel { String requestCustomSizeUrl(int width, int转载 2016-03-24 17:49:01 · 3470 阅读 · 0 评论 -
Glide 入门到精通之二十——如何旋转图像
如何用 Glide 旋转图片事实上,android.graphics.Matrix 类提供了我们所需要的准确办法(甚至更多办法)。这个代码片段就是用来旋转图像的:Bitmap toTransform = ... // your bitmap sourceMatrix matrix = new Matrix(); matrix.postRotate(rotateRotationAngle);Bit转载 2016-03-26 11:56:47 · 3857 阅读 · 1 评论 -
Glide 入门到精通之四——图片缩放和调整大小
Scaling/”>http://mrfu.me/2016/02/27/Glide_Image_Resizing&_Scaling/图片调整大小和缩放是有趣的,在实际应用中也是很重要的用 resize(x,y) 调整图片大小通常情况下,如果你的服务器或者 API 提供的图像是你需要的精确尺寸,这时是完美的情况下,在内存小号和图像质量之间的权衡。在和 Picasso 比较后,Glide 有更加高效的内转载 2016-03-23 11:06:44 · 39993 阅读 · 2 评论 -
Glide详解
一、Glide3.0新特性1.动态的GIF图片加载:Glide.with(context).load(...).asBitmap() //显示gif静态图片Glide.with(context).load(...).asGif() //显示gif动态图片2.本地视频快照:Glide现在还可以把视频解码为一张图片:Glide.with(context).load(“视频路径“)(经过我的测试,只能把原创 2015-12-22 18:08:16 · 17094 阅读 · 9 评论 -
Glide 入门到精通之六——缓存基础
缓存基础在 Android App 中必须去做的是一个很好的实现图片加载组件,尝试去减少网络请求。Glide 在这里并没有什么不同。Glide 通过使用默认的内存和磁环缓存去避免不必要的网络请求。我们将在后面的博客中去详细的查看实现细节。如果你等不到那个时候,通过浏览官方文档这个话题。目前最重要的是带着所有的图片请求放到内存和磁盘中。虽然缓存通常是很有用的,但在某些情况下,它可能不是像期待的行为那样转载 2016-03-23 14:46:19 · 8423 阅读 · 0 评论 -
Glide 入门到精通之十四 ——集成网络栈
http://mrfu.me/2016/02/28/Glide_Integrating_Networking_Stacks/集成网络栈通过 HTTP/HTTPS 从网络上下载图像并显示是非常重要的一块。虽然标准的 Android 网络包也能做这些工作,但在 Android 中开发了很多提升网络的模块。每个库有它自己的优势和劣势。最后,这其实需要项目的配合和开发人员自己的品位来决定的。Glide 的开转载 2016-03-24 11:00:22 · 1595 阅读 · 0 评论 -
Glide 入门到精通之十三 ——用 animate() 自定义动画
动画基础从图像到图像的平滑过渡是非常重要的。用户不喜欢在应用中出现突然的转变。这就是 Glide 要做的。Glide 中有一个标准动画去柔软的在你的 UI 中改变。我们在之前的博客 看了 .crossFade()。但是这篇博客,我们要去看看除了 .crossFade() 的其他选择。Glide 提供了两个选项去设置一个动画。两个版本都是在 animate() 中,但传的参数并不同。在我们之前代码,我转载 2016-03-24 10:39:03 · 1928 阅读 · 1 评论 -
Glide 入门到精通之三——占位符和渐现动画
如果你用 Glide,通过网络连接加载图像。但网速有点慢,APP显示图片界面已经打开了,但是图片半天显示不出来,这样的空 ImageView 在任何 UI 上都是不好看的。让APP 去显示一个占位符直到这张图片加载处理完成,这样应该会缓解一部分用户急躁的情绪。占位符Glide 的流式接口让这个变得非常容易的去做到!只需要调用 .placeHolder() 用一个 drawable(resource)转载 2016-03-23 10:51:40 · 8782 阅读 · 0 评论 -
Glide 入门到精通之二——图片加载
http://mrfu.me/2016/02/27/Glide_Advanced_Loading/ GridView)/”>http://mrfu.me/2016/02/27/Glide_ListAdapter(ListView,_GridView)/Glide不仅能从一个网络 URL 中加载, 也能从 Android 资源,文件和 Uri 中加载图片第一次:从一个 URL 中加载图片就像 Pic转载 2016-03-23 10:34:17 · 2330 阅读 · 0 评论 -
Glide 入门到精通之五——显示Gif和 Video
参考:http://mrfu.me/2016/02/27/Glide_Displaying_Gifs_&_Videos/显示 Gif有很多图片加载库来去加载和显示图片。能支持 Gif 有一些特别也是非常有帮助的,如果在你的 App 需要的话。Glide 实现 Gif 是如此的特别和令人惊讶,因为它是如此的简单。如果你想显示一个 Gif,你可以只使用和过去相同的调用方式就可以了:String gifU转载 2016-03-23 14:29:54 · 7315 阅读 · 0 评论 -
Glide 入门到精通之八——缩略图
缩略图优势在你要用缩略图去做优化之前,确保你理解和掌握了所有缓存的选项和请求优先级。如果你已经实现了这些,再来查看缩略图是否能帮助更好的提高你的 Android 应用。缩略图不同于之前博客提到的占位符。占位符必须附带应用程序捆绑的资源才行。缩略图是动态占位符。它也可以从网络中加载。缩略图将会在实际请求加载完或者处理完之后才显示。不管任何原因,在原始图像到达之后,缩略图不会取代原始图像。它只会被抹除。转载 2016-03-23 16:10:09 · 10073 阅读 · 2 评论 -
Glide 入门到精通之七——请求优先级
图片请求的优先级通常,你会遇到这样的使用场景:你的 App 将会需要在同一时间内加载多个图像。让我们假设你正在构建一个信息屏幕,这里有一张很大的英雄图片在顶部,还有两个小的,在底部还有一些不那么重要的图片。对于最好的用户体验来说,应用图片元素是显示要被加载和显示的,然后才是底部不紧急的 ImageView。Glide 可以用 Priority 枚举来支持你这样的行为,调用 .priority() 方转载 2016-03-23 15:01:54 · 4048 阅读 · 0 评论 -
Glide 入门到精通之九——SimpleTarget 和 ViewTarget 用于自定义视图类
Glide 中的回调:Targets目前为止,我们很方便的使用 Glide 建造者去加载图片到 ImageView 中了。Glide 隐藏了一大堆复杂的在后台的场景。Glide 做了所有的网络请求和处理在后台线程中,一旦结果准备好了之后,切回到 UI 线程然后更新 ImageView。在这篇博客中,我们假定 ImageView 不再是图像的最后一步。我们只要 Bitmap 本身。Glide 提供了一转载 2016-03-23 17:21:54 · 11769 阅读 · 0 评论 -
Glide 入门到精通之十——加载图片到通知栏和应用小部件中
加载图片到 Notifications通知栏图标对用户来说是重要的上下文。用 NotificationCompat.Builder 来直接设置大的通知图片,但是图像必须以 Bitmap 的形式。如果图片在手机上已经是可用的,这并没什么问题。然而,如果图片斌不在设备上并且需要从网上加载的话,使用标准的方式来处理就变得不可能了。让 Glide 来做吧。上篇博客中,我们看了如何用 SimpleTarget转载 2016-03-23 17:56:22 · 3166 阅读 · 1 评论 -
Glide 入门到精通之十一 ——异常:调试和错误处理
Glide 的 GeneralRequest 类提供了一个方法去设置 log 的级别。不幸的是,在生产过程中,使用这个类并不容易。然而,有一个非常简单的方法去获得 Glide 的调试日志。你所要做的就是通过 adb 的 shell 来激活。打开你的终端,使用以下命令:adb shell setprop log.tag.GenericRequest DEBUG 最后一个 DEBUG 来自标准的 An转载 2016-03-23 18:28:13 · 6526 阅读 · 0 评论 -
Glide 入门到精通之十二 ——自定义转换
http://mrfu.me/2016/02/28/Glide_Custom_Transformations/Transformations在图片被显示之前,transformations(转换) 可以被用于图像的操作处理。比如,如果你的应用需要显示一个灰色的图像,但是我们只能访问到原始色彩的版本,你可以用 transformation 去操作 bitmap,从而将一个明亮色彩版本的图片转换成灰暗的转载 2016-03-24 10:08:29 · 4781 阅读 · 0 评论 -
Glide 入门到精通之一——添加Glide
转载:http://mrfu.me/2016/02/27/Glide_Getting_Started/Glide,就像 Picasso,可以从多个源去加载和显示图片,同时也兼顾缓存和在做图片处理的时候维持一个低内存消耗。它已经在 Google 官方 APP (如 Google 2015开发者大会的应用程序)中使用了,就和 Picasso 一样受欢迎。在这个系列中,我们要探讨 Glide 和 Pica转载 2016-03-23 10:13:22 · 4238 阅读 · 0 评论