一基本介绍

  1. 本博客是基于Glide4.0+进行探究和学习
  2. 使用配置
  3. 用法比对

二使用配置

1. Android studio 使用项目gradle配置

dependencies {
//glide
compile 'com.github.bumptech.glide:glide:4.6.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.6.1'
}

2. 配置要求和可能出现的错误

Glide4.0要求使用sdk api级别为 27,所以需要将项目的sdk为27,如果配置后还是报java.lang.NoSuchMethodError: No static method这个错误,你再检查下你的v4和v7包,这个依赖也要升到27,下面贴出我的配置

com.android.support:appcompat-v7:27.0.2'

3. 当然因为glide的特性,你也应该再权限请求里面添加相关权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

三基本使用方法

1. 多数情况情况下,一行代码足以搞定;

Glide.with(fragment)
.load(myUrl)
.into(imageView);

2. 使用 Generated API教程 https://github.com/13767004362/GlideDemo

3. 各种使用方法的介绍

几种占位符

  • placeholder 表示预先占位符
  • error 错误图
  • fallback 后背回调符 在请求的url/model为 null 时展示。设计 fallback Drawable 的主要目的是允许用户指示 null 是否为可接受的正常情况

加载方式

  • CenterCrop 缩放宽和高都到达View的边界,有一个参数在边界上,另一个参数可能在边界上,也可能超过边界
  • CenterInside 如果宽和高都在View的边界内,那就不缩放,否则缩放宽和高都进入View的边界,有一个参数在边界上,另一个参数可能在边界上,也可能在边界内
  • CircleCrop 圆形且结合了CenterCrop的特性
  • FitCenter 缩放宽和高都进入View的边界,有一个参数在边界上,另一个参数可能在边界上,也可能在边界内
  • RoundedCorners 圆角
  • thumbnail 缩略图加载

4. 多重变换

这里指的是比如我们获得的是一张灰色的正方形图片,当是我们最后需要显示的是圆角红色图片,这个时候就可以进行多重变换,这里就需要用到 transform这个方法,现将图片变成圆的,再将图片背景变成红色,Glide给我们提供了圆形图片的方法 new CircleCrop(),这里推荐一个glide自定义库,基本上大部分的变化已经帮我们实现了 https://github.com/wasabeef/glide-transformations

 GlideApp.with(activity)
.load("https://img3.doubanio.com/lpic/s23119932.jpg")
.transform(new MultiTransformation<Bitmap>(new FitCenter(),new CircleCrop(),new CenterInside())) //我们可以自定义变化
.placeholder(R.drawable.ic_launcher_background)
.into(image_3);

5. 动画添加

在v4当中,它的动画是和你要加载的资源类型决定的,所以如果是bitmap就用

  1. GenericTransitionOptions 貌似是通用文件
  2. DrawableTransitionOptions 针对drawable类型文件
  3. BitmapTransitionOptions 针对bitmap类型文件
GlideApp.with(activity)
.load("https://img3.doubanio.com/lpic/s23119932.jpg")
.placeholder(R.drawable.ic_launcher_background)
.transition(DrawableTransitionOptions.withCrossFade()) //加载系统的动画
.into(image_4);
GlideApp.with(activity)
.load("https://img3.doubanio.com/lpic/s23119932.jpg")
.placeholder(R.drawable.ic_launcher_background)
.transition(GenericTransitionOptions.with(android.R.anim.slide_in_left)) //加载anim动画
.into(image_5);

6. 从内存中加载也使用动画

Glide的默认时从内存中不使用动画的,这个问题可以通过添加new RequestListener监听实现它的onResourceready()这个方法去实现

RequestBuilder<Drawable> requestBuilder = Glide.with(activity)
.load("https://img3.doubanio.com/lpic/s23119932.jpg");
requestBuilder
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
return false;
} @Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
//如果是从缓存加载,设置动画效果
image_1.startAnimation(AnimationUtils.loadAnimation(activity, android.R.anim.slide_in_left));
Log.d("onResourceReady", "in put " + isFirstResource);
return false;
}
})
.transition(GenericTransitionOptions.with(android.R.anim.slide_in_left))
.into(image_1);

然后这里有个小tips需要注意: 关于动画只加载一次的问题,要使用startAnimation启动动画而不是setAnimation;

Glide v4版本用法探究.md的更多相关文章

  1. Glide4 用法总结 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  2. Android图片加载框架最全解析(八),带你全面了解Glide 4的用法

    本篇将是我们这个Glide系列的最后一篇文章. 其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了.那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定 ...

  3. Android图片加载框架最全解析(一),Glide的基本用法

    现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有 ...

  4. Centos6.6上源码安装Nodejs V4版本

    本来就是想在vps上装一个Ghost博客,这个博客依赖的是Nodejs,然后推荐的是V4版本.然后我就对着官网的步骤安装,发现根本没有Centos6 i386的资源了(64位的还是有的), 我只能在那 ...

  5. react-router 从 v3 版本升到 v4 版本,升级小记

    react-router v4 跟 react 一样拆成了两部分,核心的 react-router 和依运行环境而定的 react-router-dom 或 react-router-native(跟 ...

  6. vue过滤器在v2.0版本用法

    vue 1.x 的写法在  vue 2.x版本已经废除 vue 1.x 写法 <body> <div id="app"> {{message | capit ...

  7. 40.qt quick- 高仿微信实现局域网聊天V4版本(支持gif动图表情包、消息聊天、拖动缩放窗口)

    在上章37.qt quick- 高仿微信实现局域网聊天V3版本(添加登录界面.UDP校验登录.皮肤更换.3D旋转),我们已经实现了: 添加登录界面. UDP校验登录. 皮肤更换. 3D旋转(主界面和登 ...

  8. Java中toArray的用法探究(java数组与list转换)

    转载原文地址: http://blog.csdn.net/guopengzhang/article/details/5497875 一.             Incident import jav ...

  9. edittext基本用法总结.md

    光标的有关问题 edittext.setSelection(2); //记住一个不能越界的bug edittext.setCursorVisible(false); //设置光标显示,不能设置光标颜色 ...

随机推荐

  1. Gitlab - Pull Request

    1.概述 今天查看Gmail,有网友私密我Gitlab的Pull Request工作流程,一直以为我写过这片博客,查看<Git和Gitlab协同工作>却发现遗漏了Pull Request这 ...

  2. MIP (百度移动网页加速器)

    前言:第一次用移动网页加速器,感觉好心情都被弄坏了.确实性能提高了不少,但是限制js,对于一些交互实现都成问题.MIP是Mobile Instant Pages的缩写,指百度移动网页加速器, 是一套应 ...

  3. ListView动态刷新adapter.notifyDataSetChanged()无反应

    前段时间在做一个动态刷新ListView(模拟聊天),遇到一个问题,调用notifyDataSetChanged()方法,数据源已经存在但是并没有动态刷新! 首先我们需要了解notifyDataSet ...

  4. 初始Windows程序

    1.属性 窗体标题 Name  窗体的图标 Icon  背景图片 BackgroundImage 背景颜色 BackColor  最大化按钮 MaxIMonBox  最小化按钮 Minimun 窗体边 ...

  5. java基础笔记(4)----数组

    介绍: 数组是一种数据类型,是引用类型,是一块连续的内存空间,用于存储和管理相同类型的多个数据. 定义:-- > 数组的声明方式 先声明,在开辟内存空间--> int [] a; a=ne ...

  6. 极其简单的帮你理解ORM中的关联关系

    ORM对象关系映射(英语:(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转 ...

  7. SQL之Left Join 关联条件的探讨

    在测试工作中,有时需要测试数据库数据经过sql计算后的结果是否满足某一功能查询得到的返回值. 针对某些需要功能需要联查多张表,此时 关联 的作用就异常重要了,而针对多表关联,其中 关联条件的重要性不言 ...

  8. C# 封装miniblink 使用HTML/CSS/JS来构建.Net 应用程序界面和简易浏览器

    MiniBlink的作者是 龙泉寺扫地僧 miniblink是什么?   (抄了一下 龙泉寺扫地僧 写的简洁) Miniblink是一个全新的.追求极致小巧的浏览器内核项目,其基于chromium最新 ...

  9. 第四章 Ajax与jQuery

    第四章   Ajax与jQuery 一.Ajax简介 在传统的Web应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的响应.如果前一个请求没有响应,则后一个请求就不能发送,在 ...

  10. 【原创】公司各个阶段 CTO 需要做什么?(上篇)

    CTO 是企业内技术最高负责人,对企业的发展起到至关重要的作用.但随着公司的不断发展,CTO 的工作重心也会不断变化.只有在正确的阶段做正确的事,才能更好地为公司做出贡献.我是空中金融 CTO ,TG ...