Glide4.0使用
导入
dependencies {
compile 'com.github.bumptech.glide:glide:4.0.0'
compile 'com.android.support:support-v4:25.3.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.0.0'
}2.下载jar 地址:glide.jar
基本使用
- 基本使用
Glide.with(this).load(imgUrl).into(img1);
2. 设置预加载和加载失败的图片及缓存策略
RequestOptions options = new RequestOptions()
.centerCrop()
.placeholder(R.mipmap.ic_launcher)//预加载图片
.error(R.mipmap.ic_launcher)//加载失败显示图片
.priority(Priority.HIGH)//优先级
.diskCacheStrategy(DiskCacheStrategy.NONE);//缓存策略
Glide.with(this).load(imgUrl).apply(options).into(img1);
显示圆形图片
- 定义转化圆形的类 继承自BitmapTransforation
public class GlideCircleTransform extends BitmapTransformation {
public GlideCircleTransform(){
super();
}
@Override
protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
return circleCrop(pool,toTransform);
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
}
private static Bitmap circleCrop(BitmapPool pool,Bitmap source){
if(source==null) return null;
int size=Math.min(source.getWidth(),source.getHeight());
int x=(source.getWidth()-size)/2;
int y=(source.getHeight()-size)/2;
Bitmap squared= Bitmap.createBitmap(source,x,y,size,size);
Bitmap result = pool.get(size, size, Bitmap.Config.ARGB_8888);
if(result==null){
result=Bitmap.createBitmap(size,size,Bitmap.Config.ARGB_8888);
}
Canvas canvas=new Canvas(result);
Paint paint=new Paint();
paint.setShader(new BitmapShader(squared,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));
paint.setAntiAlias(true);
float r=size/2f;
canvas.drawCircle(r,r,r,paint);
return result;
}
}
- 在RequestOptions中配置该类
RequestOptions options2 = new RequestOptions()
.centerCrop()
.placeholder(R.mipmap.ic_launcher)//预加载图片
.error(R.mipmap.ic_launcher)//加载失败显示图片
.priority(Priority.HIGH)//优先级
.diskCacheStrategy(DiskCacheStrategy.NONE)//缓存策略
.transform(new GlideCircleTransform());//转化为圆形
Glide.with(this).load(imgUrl).apply(options2).into(img1);
显示圆角图片
- 定义转化圆形的类 继承自BitmapTransforation
public class GlideRoundTransform extends BitmapTransformation {
private static float radius=0f;
public GlideRoundTransform(){
this(4);
}
public GlideRoundTransform(int dp){
super();
this.radius= Resources.getSystem().getDisplayMetrics().density*dp;
}
@Override
protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {
return roundCrop(pool,toTransform);
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
}
private static Bitmap roundCrop(BitmapPool pool,Bitmap source){
if(source==null){
return null;
}
Bitmap result=pool.get(source.getWidth(),source.getHeight(), Bitmap.Config.ARGB_8888);
if(result==null){
result=Bitmap.createBitmap(source.getWidth(),source.getHeight(), Bitmap.Config.ARGB_8888);
}
Canvas canvas=new Canvas(result);
Paint paint=new Paint();
paint.setShader(new BitmapShader(source,BitmapShader.TileMode.CLAMP,BitmapShader.TileMode.CLAMP));
paint.setAntiAlias(true);
RectF rectF=new RectF(0f,0f,source.getWidth(),source.getHeight());
canvas.drawRoundRect(rectF,radius,radius,paint);
return result;
}
}
- 在RequestOptions中配置该类
RequestOptions options1 = new RequestOptions()
.centerCrop()
.placeholder(R.mipmap.ic_launcher)//预加载图片
.error(R.mipmap.ic_launcher)//加载失败显示图片
.priority(Priority.HIGH)//优先级
.diskCacheStrategy(DiskCacheStrategy.NONE)//缓存策略
.transform(new GlideRoundTransform(20));//转化为圆角
Glide.with(this).load(imgUrl).apply(options1).into(img1);

Glide4.0使用的更多相关文章
- Android 图片加载框架Glide4.0源码完全解析(一)
写在之前 上一篇博文写的是Picasso基本使用和源码完全解析,Picasso的源码阅读起来还是很顺畅的,然后就想到Glide框架,网上大家也都推荐使用这个框架用来加载图片,正好我目前的写作目标也是分 ...
- Android 图片加载框架Glide4.0源码完全解析(二)
写在之前 上一篇博文写的是Android 图片加载框架Glide4.0源码完全解析(一),主要分析了Glide4.0源码中的with方法和load方法,原本打算是一起发布的,但是由于into方法复杂性 ...
- Glide4.0 centerCrop属性和圆角 冲突
首先致谢:https://blog.csdn.net/flyinbed_/article/details/75506062 咱们不是代码的生产者,只是代码的搬运工. 最近有个工作中有个需求就是展示的图 ...
- 集成Glide4.3.1出错!AbstractMethodError: abstract method "void com.bumptech.glide.module
项目中原本是用的Glide3.7.0,一切功能正常,但是集成了网易云信的UIKIT后,就出问题了,发现是Glide4.0的问题. Glide4.0,始终会报这么一个错,就算是最简单的加载也仍然报错. ...
- Glide3升级到Glide4碰到的问题汇总以及部分代码修改
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/188 Glide.3x的版本是3.7.0,Glide4.x ...
- 2017上半年技术文章集合【Android】—184篇文章分类汇总
地址: http://blog.csdn.net/androidstarjack/article/details/77923753 声明 | 本文是于亚豪 原创 终端研发部 前言: 2017年已经过大 ...
- Glide v4版本用法探究.md
一基本介绍 本博客是基于Glide4.0+进行探究和学习 使用配置 用法比对 二使用配置 1. Android studio 使用项目gradle配置 dependencies { //glide c ...
- Android开发——获得Json数据,并显示图片
流程介绍 使用okhttp网络框架进行get请求,获得json数据 //一个封装好的工具类的静态方法 public static void sendOkHttpRequest(final String ...
- Glide优化
几乎所有的 OOM 错误都是因为宿主应用出了问题,而不是 Glide 本身. 应用里两种常见的 OOM 错误分别是: 过大的内存分配 (Excessively large allocations) 内 ...
随机推荐
- Java 引用类型变量的声明和使用
引用类型变量的声明和使用 (1)把类名当作是一种类型来声明变量,这种变量叫引用类型变量.如:People people; (2)引用类型变量保存对象的“引用”,即对象的地址. (3)对象的创建 new ...
- C语言回调函数详解
1. 什么是回调函数? 回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义.我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类 ...
- 蓝桥杯 算法训练 ALGO-36 传纸条
算法训练 传纸条 时间限制:1.0s 内存限制:512.0MB 问题描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而 ...
- java代码====实现按钮点击改变颜色=======
总结: package com.a.b; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event ...
- oracle数据库查询题目!!!!!我的最爱
使用scott/tiger用户下的emp表和dept表完成下列练习,表的结构说明如下 emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪 ...
- 融云rongCloud聊天室的使用
融云提供了两种途径的接口, 一个是app端,一个是服务器端的. app端 1.连接融云,监听消息 rong = api.require('rongCloud2'); rong.init(functio ...
- ARM-Linux内核移植之(一)——内核启动流程分析
内核版本:2.6.22 为什么要采用这样一个较低的版本进行移植了,因为韦东山大牛说了,低版本的才能学到东西,越是高版本需要移植时做的工作量越少,学的东西越少. 内核启动分为三个阶段,第一是运行hea ...
- JavaScript笔记——基础知识(一)
<Script>标签属性 <script>xxx</script>这组标签,是用于在 html 页面中插入 js 的主要方法.它主要有以下 几个属性: charse ...
- Python3 持久化pickle模块
pickle提供了一个简单的持久化功能.可以将对象以文件的形式存放在磁盘上. 1.pickle.dump(obj, file[, protocol]) 序列化对象,并将结果数据流写入到文件对象中.参数 ...
- MIS系统部署方案