Glide v4版本用法探究.md
一基本介绍
- 本博客是基于Glide4.0+进行探究和学习
- 使用配置
- 用法比对
二使用配置
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就用
- GenericTransitionOptions 貌似是通用文件
- DrawableTransitionOptions 针对drawable类型文件
- 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的更多相关文章
- Glide4 用法总结 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Android图片加载框架最全解析(八),带你全面了解Glide 4的用法
本篇将是我们这个Glide系列的最后一篇文章. 其实在写这个系列第一篇文章的时候,Glide就推出4.0.0的RC版了.那个时候因为我一直研究的都是Glide 3.7.0版本,再加上RC版本还不太稳定 ...
- Android图片加载框架最全解析(一),Glide的基本用法
现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有 ...
- Centos6.6上源码安装Nodejs V4版本
本来就是想在vps上装一个Ghost博客,这个博客依赖的是Nodejs,然后推荐的是V4版本.然后我就对着官网的步骤安装,发现根本没有Centos6 i386的资源了(64位的还是有的), 我只能在那 ...
- react-router 从 v3 版本升到 v4 版本,升级小记
react-router v4 跟 react 一样拆成了两部分,核心的 react-router 和依运行环境而定的 react-router-dom 或 react-router-native(跟 ...
- vue过滤器在v2.0版本用法
vue 1.x 的写法在 vue 2.x版本已经废除 vue 1.x 写法 <body> <div id="app"> {{message | capit ...
- 40.qt quick- 高仿微信实现局域网聊天V4版本(支持gif动图表情包、消息聊天、拖动缩放窗口)
在上章37.qt quick- 高仿微信实现局域网聊天V3版本(添加登录界面.UDP校验登录.皮肤更换.3D旋转),我们已经实现了: 添加登录界面. UDP校验登录. 皮肤更换. 3D旋转(主界面和登 ...
- Java中toArray的用法探究(java数组与list转换)
转载原文地址: http://blog.csdn.net/guopengzhang/article/details/5497875 一. Incident import jav ...
- edittext基本用法总结.md
光标的有关问题 edittext.setSelection(2); //记住一个不能越界的bug edittext.setCursorVisible(false); //设置光标显示,不能设置光标颜色 ...
随机推荐
- canvas线条的属性
一.线条的帽子lineCap 取值:butt(默认值),round圆头,square方头 var canvas=document.getElementById("canvas"); ...
- 关于JSP页面Property [ssid] not found on type [java.lang.String]错误的注意事项
转发于:http://blog.csdn.net/w86440044/article/details/28277177
- Oracle的用户,权限以及角色
一.用户 1.创建用户 创建用户u密码为aa. SQL> create user u identified by aa; 2.为用户赋予权限 这个用户还不能连接数据库,必须为其赋予一些权限才可以 ...
- 以太坊开发DApp入门教程——区块链投票系统(一)
概述 对初学者,首先要了解以太坊开发相关的基本概念. 学习以太坊开发的一般前序知识要求,最好对以下技术已经有一些基本了解: 一种面向对象的开发语言,例如:Python,Ruby,Java... 前 ...
- 下一个ajax异步请求被挂起问题
异步请求按理来说应该是会不受其它ajax请求影响的,但如果是服务端访问了Session就不能这么说了. 了解了asp.net的会话管理,那我们来看看今天要谈到的主题: IReadOnlySession ...
- mysql数据库导入sql文件时提示“Error Code: 1153 - Got a packet bigger than 'max_allowed_packet' bytes”解决办法
向mysql数据库中导入sql文件时,如果文件过大(几百M),会提示"Error Code: 1153 - Got a packet bigger than 'max_allowed_pac ...
- 第二次作业:APP案例分析
App案例分析 产品:三国杀-页游手游双通 选择理由 当今社会手机已经渐渐取代了电脑在人们日常生活的需求,既然要选择APP进行案例分析,首推的估计就是手机APP了.三国杀是陪伴我高中时代的主要娱乐方式 ...
- 【iOS】Swift GCD-下
欢迎来到本GCD教程的第二同时也是最终部分! 在第一部分中,你学到了并发,线程以及GCD的工作原理.通过使用dispatch_barrrier和dispatch_sync,你做到了让PhotoMana ...
- C++中文件的读写
C++中文件的读写 在C++中如何实现文件的读写? 一.ASCII 输出 为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准C++中,已经使用<fstrea ...
- httpClient 中的post或者get请求
httpClient相对于java自带的请求功能更加强大,下面就以例子的形式给出: //HttpClient Get请求 private static void register() { try { ...