参考:Android实践 – Android开源框架Glide的使用
简介3.x
这里介绍的是3.7,现在已经是4.x,改了很多地方。 Glide是一个快速高效的多媒体管理和图像加载的框架,封装了Android平台的多媒体的解码,内存和硬盘缓存等,Glide 支持解码、显示视频、图像和GIFs,Glide是基于定制的HttpUrlConnection,下载使用
jar 可以在Github下载最新的jar包 下载地址Gradle compile 'com.github.bumptech.glide:glide:3.7.0'
demo用到的权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
使用
步骤:
Glide.with(context).load(url).into(iv)
效果图:
1 加载资源图片
Glide
.with(context)
.load(R
.mipmap.ic_launcher)
.into(iv);
2 加载文件图片
String path = Environment.getExternalStorageDirectory().getAbsolutePath() +
"/Pictures/Screenshots/a.png";
File file =
new File(path);
Glide.
with(
context).load(
file).into(iv);
//或者
Glide.
with(
context).load(
"file://" + path).into(iv);
3 加载网络图片
Glide.with(context).
load(url).into(iv);
4 暂位图
Glide
.with(context)
.load(url2)
.placeholder(R
.mipmap.ic_launcher)
.error(R
.mipmap.ic_launcher)
.into(iv)
5 动画
Glide
.with(context)
.load(url2)
.crossFade(
3000)
.into(iv)
6 裁剪图片
int pic_width = (int) getResources()
.getDimension(R
.dimen.pic_width)
int pic_height = (int) getResources()
.getDimension(R
.dimen.pic_height)
//直接填数字是像素,从dimens中取值是dp
//fitCenter() centerCrop()
Glide
.with(context)
.load(url2)
.override(pic_width, pic_height)
.centerCrop()
.into(iv)
7 加载gif
Glide
.with(context)
.load(url3)
.asGif()
.into(iv)
8 加载gif作为静态图像
Glide
.with(context)
.load(url3)
.asBitmap()
.into(iv)
9 加载本地视频
String path = Environment
.getExternalStorageDirectory()
.getAbsolutePath() +
"/a.mp4"
Uri uri = Uri
.fromFile(new File(path))
Glide
.with(context)
.load(uri)
.into(iv)
10不使用内存缓存
Glide.with(context).
load(url2).skipMemoryCache(true).into(iv);
11不使用硬盘缓存
Glide
.with(context)
.load(url2)
.diskCacheStrategy(DiskCacheStrategy
.NONE)
.into(iv)
12优先级:高
Glide
.with(context)
.load(url2)
.priority(Priority
.HIGH)
.into(iv)
13优先级:中
Glide
.with(context)
.load(url2)
.priority(Priority
.NORMAL)
.into(iv)
14优先级:低
Glide
.with(context)
.load(url2)
.priority(Priority
.LOW)
.into(iv)
15优先级:立即
Glide
.with(context)
.load(url2)
.priority(Priority
.IMMEDIATE)
.into(iv)
Demo
GlideDemo01
Glide4.x
Demo: https://git.oschina.net/libraryDemo/Glide4Demo
Gradle
project module:
allprojects
{
repositories {
jcenter()
mavenCentral()
maven { url 'https://maven.google.com' }
}
}
app module
dependencies
{
compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'
}
简单使用Glide’s generated API
package com.cqc.glide4demo.util;
import com.bumptech.glide.annotation.GlideModule;
import com.bumptech.glide.module.AppGlideModule;
/**
* 一定要点击小锤子Make Project,才会有GlidApp
*/
@GlideModule
public final class MyAppGlideModule extends AppGlideModule {
}
GlideApp
.with(context)
.load(
"http://mpic.tiankong.com/397/0e1/3970e127ca6491f17ad355feb2ff79d6/640.jpg")
.placeholder(R
.mipmap.load)
.error(R
.mipmap.error)
.fitCenter()
.into(iv)
fitCenter()
centerCrop()
placeholder()和error()
placeholder()和error()可以使用ColorDrawable
GlideApp
.with(context)
.load(url)
.placeholder(new ColorDrawable(Color
.RED))
.error(new ColorDrawable(Color
.GREEN))
.into(iv)
fallback()
url为null 或”“时,采用fallback()
GlideApp
.with(context)
.load(null)
.fallback(R
.mipmap.error)
.into(iv)
需引入
import static
com.bumptech.glide.request.RequestOptions.centerCropTransform
GlideApp
.with(context)
.load(URL)
.apply(centerCropTransform())
.into(iv)
RequestOptions
RequestOptions options = new RequestOptions()
options
.centerCrop()
GlideApp
.with(context)
.load(url)
.apply(options)
.into(iv)
withCrossFade
import static
com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade
GlideApp
.with(context)
.load(url)
.transition(withCrossFade())
.into(iv)
其他
第三方开源库:Picasso-图片加载框架 第三方开源库:Glide-图片加载框架 第三方开源库:imageLoader的使用
转载请注明原文地址: https://ju.6miu.com/read-678543.html