glide中级进阶

一、glide和CircleImageView项目有冲突(直接使用glide切圆形即可)

解决:放弃CircleImageView,直接使用
glide切圆形。
代码:编写了一个工具类。复制 代码即可

// 将图片设置为圆形
public static void showImage( final Context context, String url, final ImageView imageview,Integer drawable) {

if ( null !=context)
{
Glide. with (context).load(url).asBitmap().placeholder(drawable).centerCrop().fitCenter().error(drawable).into( new BitmapImageViewTarget(imageview) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory. create ( context .getResources(), resource);
circularBitmapDrawable.setCircular( true );
imageview .setImageDrawable(circularBitmapDrawable);
}
});
}

}


二、安全的显示gif图片(考虑到url返回的可能不是gif)

Glide .with( context ) .load( gifUrl ) .asGif() .error( R.drawable.full_cake ) .into( imageViewGif );

3、不缓存图片(glide默认是内存加磁盘缓存)

Glide .with( context ) .load( eatFoodyImages[0] ) .diskCacheStrategy( DiskCacheStrategy.NONE ) .skipMemoryCache( true ) .into( imageViewInternet );

skipMemoryCache( true ) 内存缓存
diskCacheStrategy( DiskCacheStrategy.NONE ) 磁盘缓存 磁盘缓存需要枚举而不是布尔
  • DiskCacheStrategy.NONE 什么都不缓存,就像刚讨论的那样
  • DiskCacheStrategy.SOURCE 仅仅只缓存原来的全分辨率的图像。
  • DiskCacheStrategy.RESULT 仅仅缓存最终的图像,即,降低分辨率后的(或者是转换后的)
  • DiskCacheStrategy.ALL 缓存所有版本的图像(默认行为)

4、glide加载优先级
比如:大将军身边有两个小士兵,那么肯定优先展示将军将更好看.
很多时候,图片是有先后顺序的。可以使用一下枚举
  • Priority.LOW
  • Priority.NORMAL
  • Priority.HIGH
  • Priority.IMMEDIATE

使用方式:
高优先级:
Glide .with( context ) .load( UsageExampleListViewAdapter.eatFoodyImages[0] ) .priority( Priority.HIGH ) .into( imageViewHero );

低优先级:
Glide .with( context ) .load( UsageExampleListViewAdapter.eatFoodyImages[0] ) .priority(Priority.LOW) .into( imageViewHero );

5、如何用 Glide 旋转图片

创建这个类:
public class RotateTransformation extends BitmapTransformation { private float rotateRotationAngle = 0f; public RotateTransformation(Context context, float rotateRotationAngle) { super( context ); this.rotateRotationAngle = rotateRotationAngle; } @Override protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { Matrix matrix = new Matrix(); matrix.postRotate(rotateRotationAngle); return Bitmap.createBitmap(toTransform, 0, 0, toTransform.getWidth(), toTransform.getHeight(), matrix, true); } @Override public String getId() { return "rotate" + rotateRotationAngle; }}

使用方式:
Glide .with( context ) .load( eatFoodyImages[0] ) .transform( new RotateTransformation( context, 90f )) .into( imageView3 );

Bug:旋转后(非90度,如45度),出现的出图片外区域为黑色!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值