glide

Glide万字解密

梦想的初衷 提交于 2020-02-17 19:05:24
Glide现在应用最广的一个图片加载框架了,一直都想对它下手,每次都是深陷其中。。。这次狠下心来,对它来个全面的剖析,争取对整个流程和其中的细节都有一个覆盖。 本文的Glide的解析是基于最新的4.11.0版本来进行的。 其实从一般的网络加载图片,可以简单分析下大体的流程,无非就是建立相关的请求信息,然后通过线程池技术对请求信息进行请求,然后将下载的图片文件进行转化显示。 先来看个简单的测试使用代码开始,然后逐步深入 Glide.with(view.getContext()) .load(url) .into(view); with() Glide的 with 函数为我们提供了不同的入参,其最终的返回对象都是 RequestManager 我们的测试代码用的是 Context 那么这里我们就跟踪一下这个函数,其实其他几个都是相似的 @NonNull public static RequestManager with(@NonNull Context context) { return getRetriever(context).get(context); } @NonNull private static RequestManagerRetriever getRetriever(@Nullable Context context) { //校验Context不能为空

Glide的加载图片的帮助类,用来把图片圆角或者改成圆形图片

可紊 提交于 2020-02-04 11:46:17
Glide虽然非常好用但是没找到把图片圆角的方法,所以百度了一个非常不错的加载类自己实现圆角图 感谢原文章作者:http://blog.csdn.net/weidongjian/article/details/47144549 自定义一个extend BitmapTransformation的方法,把获得的bitmap转化成圆形图片 import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapShader; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RectF; import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; /** * 这是一个Glide的加载图片的帮助类,用来把图片圆角 * Created by Lizhanqi on 2016/9

Glide 加载部分圆角图片

跟風遠走 提交于 2020-02-04 11:41:06
在App开放中经常遇到设置ImageView为部分圆角的情况,但是Glide又没有提供这个方法,该怎么办呢?直接上代码! /** * @author csc * @date 2019-01-18 * Todo 设置图片部分圆角 */ public class RoundedCornersTransform implements Transformation<Bitmap> { private BitmapPool mBitmapPool; private float radius; private boolean isLeftTop, isRightTop, isLeftBottom, isRightBotoom; /** * 需要设置圆角的部分 * * @param leftTop 左上角 * @param rightTop 右上角 * @param leftBottom 左下角 * @param rightBottom 右下角 */ public void setNeedCorner(boolean leftTop, boolean rightTop, boolean leftBottom, boolean rightBottom) { isLeftTop = leftTop; isRightTop = rightTop; isLeftBottom = leftBottom;

主流图片加载框架 ImageLoader、Glide、Picasso、Fresco 对比

允我心安 提交于 2020-02-04 11:40:57
图片缓存库主页: Glide https://github.com/bumptech/glide fresco - An Android library for managing images and the memory they use https://github.com/facebook/fresco picasso - A powerful image downloading and caching library for Android http://square.github.io/picasso/ https://github.com/square/picasso Android-Universal-Image-Loader - Powerful and flexible library for loading, caching and displaying images on Android. https://github.com/nostra13/Android-Universal-Image-Loader A custom image view for Android, designed for photo galleries and displaying huge images https://github.com/davemorrissey

Android 常用开源框架源码解析 系列 (四)Glide

瘦欲@ 提交于 2020-01-29 04:02:58
一、定义 Glide 一个被google所推荐的图片加载库,作者是bumptech。对Android SDk 最低要求是 API 10 与之功能类似的是Square公司的picasso 二、基本概念 Model :数据来源 :Uri、本地文件、资源ID Data :加工数据 Resource :对原始数据进行解码,解码之后的资源 resource Resource decode :资源解码器 TransformedResource:转换资源 TranscodedResource:转码,将静态、Gif动态图进行格式转换以便能加载 Target :目标图片 三、整体流程 A:Model图片数据源 ———ModelLoader加载—>原始数据Data——Decoder解码——> Resource——Transform裁剪——>TransformResource——Transcode转码——>TranscodeResource——封装——>Target 四、源码 引入 :compile 'com.github.bumptech.glide:glide:3.7.0' 4.1、使用流程三步曲: Glide .with(“上下文context”) .load(“url”) .into(“显示的控件资源"); 4.2、常用加载图片的配置参数: public void LoadImage(View

android Glide 4.0图片加载失败

六月ゝ 毕业季﹏ 提交于 2020-01-15 20:03:13
项目中查看大图,并可以拖拽缩放,但是在加载图片等时候有些图片不能加载出来,报了一个错误: class com.bumptech.glide.load.engine.GlideException: Failed to load resource 原因: DragPhotoView 图片在加载的时候进行了缩放,导致图片失帧,不能加载, 解决方法:必须是加载原图 //加载原图的操作 RequestOptions options = new RequestOptions().override(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL); Glide.with(getBaseContext()) .load(url) .apply(options) .listener(new RequestListener<Drawable>() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) { LogUtils.e("" + e.getMessage()); LogUtils.e("model》》》" + model); return false;

搞定RecyclerView适配器+Glide图片调用实现新闻简单列表

孤街醉人 提交于 2020-01-15 03:48:22
总体思路:总布局设计好,recyclerview数据用适配器填充,适配器的数据即多个子布局(由图片和文字组成)组成的一个列表,后台实现需要用相应的带有图片和文字属性的类进行数据传输 按顺序看该文档 1.总布局activity_main.xml设置顶层导航栏,设置recyclerView(用适配器填充内容) <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:context=".MainActivity"> <HorizontalScrollView android:layout_width="match_parent" android:layout_height="match_parent">

Glide加载gif 3.x与4.x加载次数的区别

為{幸葍}努か 提交于 2020-01-06 17:04:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 主要记录下3.x与4.x加载次数的区别 Glide 3.x Glide.with(this).load(R.drawable.test_gif).into(new GlideDrawableImageViewTarget(imageView,1)); //加载一次 Glide 4.x Glide.with(this).load(R.drawable.test_gif).listener(new RequestListener() { @Override public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target,boolean isFirstResource) { return false; } @Override public boolean onResourceReady(Drawable resource, Object model, Target target, DataSource dataSource,boolean isFirstResource) { if (resourceinstanceof GifDrawable) { //加载一次 ((GifDrawable)resource)

glide格式不完整(丢帧, 压缩出错)的GIF图片解码

我的未来我决定 提交于 2020-01-06 15:23:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> https://www.jianshu.com/p/c3a0c64d6954 使用glide显示gif动图时, 报错 http://pic.wenwen.soso.com/pqpic/wenwenpic/0/20171116143737-1895154083_gif_398_305_3740344/0 在浏览器能够打开动图, 但是glide加载时只显示静态图片, 并且log有错误: Glide: Load failed for http://pic.wenwen.soso.com/pqpic/wenwenpic/0/20171116143738-1327109971_gif_405_293_3665345/0 with size [-2147483648x-2147483648] class com.bumptech.glide.load.engine.GlideException: Failed to load resource Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Failed LoadPath{ContentLengthInputStream->GifDrawable->GifDrawable},

Glide源码导读

二次信任 提交于 2019-12-24 00:13:19
最近比较无聊,为了找点事干,就花了两天时间把Glide的源码大概看了一下。刚开始看Glide的源码头脑还是比较乱的,因为作者引入了几个概念,又大量用了泛型,如果不了解这些概念读起代码来就比较痛苦,我也没有详细看各种实现细节的东西,只是了解了下这个框架的大概样子,在这篇文章里,我会介绍下Glide中的一些关键概念,并走一遍图片加载流程,如果你要阅读Glide源码的话,应该多少会有点帮助。 基本概念 首先是三个最基本的概念: Model , Data 和 Resource 。 想一下,我们加载图片需要什么?一般是一个url,但url并不是所有情况,还有资源ID,文件等等,甚至可以是Feed流中的一条Feed,虽然一般我们会从Feed中取出图片的url来转换为从url中加载的情况,Glide把这些抽像为了一个概念,就是 Model ,所以 Model 就是数据地址的最初来源。 Model 并不能直接解析为图片,比如一个url,是要转换为网络流的InputStream才能被解析为图片的, Model 需要进行一次转换才能做为数据解析的数据源,这些转换后的东西就叫做 Data ,Glide并没有一个Data类,但有很多和它相关的概念,如dataClase,DataFetcher等。 那么 Resource 呢,其实它就是一个包装类,一个wrapper,它wrap一个对象