//推荐文章
http://mrfu.me/2016/02/27/Glide_Request_Priorities/
http://www.lai18.com/content/2505937.html
属性
thumbnail()简单的缩略图:
//Glide的基本实现方法
Glide
.with( context )
.load( UsageExampleGifAndVideos.gifUrl )
.thumbnail( 0.1f )
.into( imageView2 );
你传了一个 0.1f 作为参数,Glide 将会显示原始图像的10%的大小。如果原始图像 有1000x1000 像素,那么缩略图将会有 100x100 像素。因为这个图像将会明显比 ImageView 小很多,你需要确保它的 ScaleType 的设置是正确的。
priority()优先级:
填的枚举参数分别为:
Priority.LOW 最低
Priority.NORMAL 正常
Priority.HIGH 高
Priority.IMMEDIATE 最高
跳过磁盘缓存diskCacheStrategy():
你可以用 .diskCacheStrategy() 方法为 Glide 改变磁盘缓存的行为。不同的于 .skipMemoryCache() 方法,它需要一个枚举而不是一个简答的布尔值。如果你想要为一个请求禁用磁盘缓存。使用枚举 DiskCacheStrategy.NONE 作为参数
自定义磁盘缓存:
枚举参数有:
DiskCacheStrategy.NONE 什么都不缓存,就像刚讨论的那样
DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像。在我们上面的例子 中,将会只有一个 1000x1000 像素的图片
DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即,降低分辨率后的(或者是转换后的)
DiskCacheStrategy.ALL 缓存所有版本的图像(默认的)
内存缓存skipMemoryCache:
我们调用了 .skipMemoryCache(true) 去明确告诉 Glide 跳过内存缓存。这意味着 Glide 将不会把这张图片放到内存缓存中去。这里需要明白的是,这只是会影响内存缓存!Glide 将会仍然利用磁盘缓存来避免重复的网络请求。
asBitmap():
将Gif 转为 Bitmap
asGif():
Gif 检查属性
FitCenter:
fitCenter() 是裁剪技术,即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围。该图像将会完全显示,但可能不会填满整个 ImageView
CenterCrop:
CenterCrop()是一个裁剪技术,即缩放图像让它填充到 ImageView 界限内并且侧键额外的部分。ImageView 可能会完全填充,但图像可能不会完整显示
override(w,h):
加载时给图片设置宽高
dontAnimate():
取消动画属性调用以后将没有任何动画
crossFade():
淡入淡出属性动画默认的持续时间是 300毫秒比如crossFade(3000)代表动画时间3秒
error:
错误占位符比如加载出错等设置出错默认图片比如error(R.mipmap.future_studio_launcher)
placeHolder():
占位属性内部可以设置默认图片比如placeholder(R.mipmap.ic_launcher)
load(String imageUrl) :
这里你可以指定哪个图片应该被加载,同上它会是一个 字符串的形式表示一个网络图片的 URL
into(ImageView targetImageView) :
你的图片会显示到对应的 ImageView 中。
列子:
ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
String internetUrl = "http://i.imgur.com/DvpvklR.png";
Glide
.with(context)
.load(internetUrl)
.into(targetImageView);
从资源中加载:
地址用ID代替:
int resourceId = R.mipmap.ic_launcher;
Glide
.with(context)
.load(resourceId)
.into(imageViewResource);
从文件中加载:
File file = new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES), "Running.jpg");
Glide
.with(context)
.load(file)
.into(imageViewFile);
一个小助手功能:简单的从资源 id 转换成 Uri:
public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FOREWARD_SLASH = "/";
private static Uri resourceIdToUri(Context context, int resourceId) {
return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId);
}
显示本地视频
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with( context )
.load( Uri.fromFile( new File( filePath ) ) )
.into( imageViewGifAsBitmap );
释放资源
Glide.get(MainActivity.this).clearDiskCache();
Glide.get(MainActivity.this).clearMemory();
加在圆形图片:
一、
public static class CircleTransform extends BitmapTransformation {
public CircleTransform(Context context) {
super(context);
}
@Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
return circleCrop(pool, toTransform);
}
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;
// TODO this could be acquired from the pool too
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;
}
@Override public String getId() {
return getClass().getName();
}
}
二、
final ImageView img= (ImageView) findViewById(R.id.img);
Glide.with(this).load(path).asBitmap().fitCenter().diskCacheStrategy(DiskCacheStrategy.SOURCE)
.placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher)
.into(new BitmapImageViewTarget(img) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(getResources(),resource);
//圆角
circularBitmapDrawable.setCornerRadius(30L);
//圆形
circularBitmapDrawable.setCircular(true);
//深浅度
circularBitmapDrawable.setAlpha(100);
img.setImageDrawable(circularBitmapDrawable);
}
});
http://mrfu.me/2016/02/27/Glide_Request_Priorities/
http://www.lai18.com/content/2505937.html
http://blog.csdn.net/richiezhu/article/details/46968569
//Glide的特点
Glide:Google推荐的图片加载库,专注于流畅的滚动属性
thumbnail()简单的缩略图:
//Glide的基本实现方法
Glide
.with( context )
.load( UsageExampleGifAndVideos.gifUrl )
.thumbnail( 0.1f )
.into( imageView2 );
你传了一个 0.1f 作为参数,Glide 将会显示原始图像的10%的大小。如果原始图像 有1000x1000 像素,那么缩略图将会有 100x100 像素。因为这个图像将会明显比 ImageView 小很多,你需要确保它的 ScaleType 的设置是正确的。
priority()优先级:
填的枚举参数分别为:
Priority.LOW 最低
Priority.NORMAL 正常
Priority.HIGH 高
Priority.IMMEDIATE 最高
跳过磁盘缓存diskCacheStrategy():
你可以用 .diskCacheStrategy() 方法为 Glide 改变磁盘缓存的行为。不同的于 .skipMemoryCache() 方法,它需要一个枚举而不是一个简答的布尔值。如果你想要为一个请求禁用磁盘缓存。使用枚举 DiskCacheStrategy.NONE 作为参数
自定义磁盘缓存:
枚举参数有:
DiskCacheStrategy.NONE 什么都不缓存,就像刚讨论的那样
DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像。在我们上面的例子 中,将会只有一个 1000x1000 像素的图片
DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即,降低分辨率后的(或者是转换后的)
DiskCacheStrategy.ALL 缓存所有版本的图像(默认的)
内存缓存skipMemoryCache:
我们调用了 .skipMemoryCache(true) 去明确告诉 Glide 跳过内存缓存。这意味着 Glide 将不会把这张图片放到内存缓存中去。这里需要明白的是,这只是会影响内存缓存!Glide 将会仍然利用磁盘缓存来避免重复的网络请求。
asBitmap():
将Gif 转为 Bitmap
asGif():
Gif 检查属性
FitCenter:
fitCenter() 是裁剪技术,即缩放图像让图像都测量出来等于或小于 ImageView 的边界范围。该图像将会完全显示,但可能不会填满整个 ImageView
CenterCrop:
CenterCrop()是一个裁剪技术,即缩放图像让它填充到 ImageView 界限内并且侧键额外的部分。ImageView 可能会完全填充,但图像可能不会完整显示
override(w,h):
加载时给图片设置宽高
dontAnimate():
取消动画属性调用以后将没有任何动画
crossFade():
淡入淡出属性动画默认的持续时间是 300毫秒比如crossFade(3000)代表动画时间3秒
error:
错误占位符比如加载出错等设置出错默认图片比如error(R.mipmap.future_studio_launcher)
placeHolder():
占位属性内部可以设置默认图片比如placeholder(R.mipmap.ic_launcher)
load(String imageUrl) :
这里你可以指定哪个图片应该被加载,同上它会是一个 字符串的形式表示一个网络图片的 URL
into(ImageView targetImageView) :
你的图片会显示到对应的 ImageView 中。
列子:
ImageView targetImageView = (ImageView) findViewById(R.id.imageView);
String internetUrl = "http://i.imgur.com/DvpvklR.png";
Glide
.with(context)
.load(internetUrl)
.into(targetImageView);
从资源中加载:
地址用ID代替:
int resourceId = R.mipmap.ic_launcher;
Glide
.with(context)
.load(resourceId)
.into(imageViewResource);
从文件中加载:
File file = new File(Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES), "Running.jpg");
Glide
.with(context)
.load(file)
.into(imageViewFile);
一个小助手功能:简单的从资源 id 转换成 Uri:
public static final String ANDROID_RESOURCE = "android.resource://";
public static final String FOREWARD_SLASH = "/";
private static Uri resourceIdToUri(Context context, int resourceId) {
return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId);
}
显示本地视频
String filePath = "/storage/emulated/0/Pictures/example_video.mp4";
Glide
.with( context )
.load( Uri.fromFile( new File( filePath ) ) )
.into( imageViewGifAsBitmap );
释放资源
Glide.get(MainActivity.this).clearDiskCache();
Glide.get(MainActivity.this).clearMemory();
加在圆形图片:
一、
public static class CircleTransform extends BitmapTransformation {
public CircleTransform(Context context) {
super(context);
}
@Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
return circleCrop(pool, toTransform);
}
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;
// TODO this could be acquired from the pool too
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;
}
@Override public String getId() {
return getClass().getName();
}
}
二、
final ImageView img= (ImageView) findViewById(R.id.img);
Glide.with(this).load(path).asBitmap().fitCenter().diskCacheStrategy(DiskCacheStrategy.SOURCE)
.placeholder(R.mipmap.ic_launcher).error(R.mipmap.ic_launcher)
.into(new BitmapImageViewTarget(img) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(getResources(),resource);
//圆角
circularBitmapDrawable.setCornerRadius(30L);
//圆形
circularBitmapDrawable.setCircular(true);
//深浅度
circularBitmapDrawable.setAlpha(100);
img.setImageDrawable(circularBitmapDrawable);
}
});