自适应的加载方法
public static void loadImgBySize(Context context, ImageView imageView, String imgUrl, int w, int h) {
Glide.with(context).load(imgUrl).override(w, h).placeholder(R.mipmap.placeholder)
.error(R.mipmap.placeholder)
.crossFade()//设置淡入淡出效果
.priority(Priority.NORMAL) //下载的优先级
//all:缓存源资源和转换后的资源 none:不作任何磁盘缓存
//source:缓存源资源 result:缓存转换后的资源
.diskCacheStrategy(DiskCacheStrategy.ALL) //缓存策略
.into(imageView);
}
用法: w等于屏幕宽 h等于Integer.MAX_VALUE ,这样可以解决图片自适应高度的问题,刚开始我也有点不理解
下面是解释:
ImageView这个控件只配置
<ImageView
android:id="@+id/wg_dynamic_list_item_bg"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
默认按图片比例缩放显示的
上面控件因为设置了宽度是match_parent,高度是自适应
下图是在加载图片的时候设置 override 的宽高都一样,都是屏幕的宽度大小,此时ImageView的大小是按override设置时的宽高显示,但是图片的实际宽高是 高比宽大, 即使设置了图片的宽为屏幕的宽,也不会平铺显示,因为等比例缩放,因为ImageView的高 没有满足 图片的高 进行等比例缩放,所以只能在ImageView的高 里面缩放到满足等比例缩放的原则
下图是ImageView的高度是屏幕宽的一半的,ImageView的宽度依旧是屏幕宽
但是,如果设置了override 的 高度足够大,此时就可以忽略高度的存在了,等比例完全可以由宽度决定了
这就证明了可以解决图片自适应高度的问题了
Glide常用的几个方法:
1.将图片加载成Bitmap
public static void loadImgBitmap(Context context,String imgUrl){
Glide.with(context)
.load(imgUrl)
.asBitmap()//强制Glide返回一个Bitmap对象
.placeholder(R.mipmap.placeholder)
.error(R.mipmap.placeholder)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap bitmap, GlideAnimation<? super Bitmap> glideAnimation) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
LogUtils.e("width___" + width);
LogUtils.e("height___" + height);
}
});
}
2.加载成圆形
/**
* 加载圆图
*
* @param context
* @param imageView
* @param imgUrl
*/
public static void loadCircleImage(final Context context, final ImageView imageView, String imgUrl, int resourceId) {
Glide.with(context)
.load(imgUrl != null ? imgUrl.trim() : imgUrl)
.asBitmap()
.centerCrop()
.placeholder(resourceId)
.error(resourceId)
.diskCacheStrategy(DiskCacheStrategy.ALL) //缓存策略
.priority(Priority.NORMAL) //下载的优先级
.into(new BitmapImageViewTarget(imageView) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(context.getResources(), resource);
circularBitmapDrawable.setCircular(true);
imageView.setImageDrawable(circularBitmapDrawable);
}
});
}
3.自定义角度显示
/**
* 加载自定义圆角
*
* @param context
* @param imageView
* @param imgUrl
*/
public static void loadRoundImage(final Context context, final ImageView imageView, String imgUrl, final float cornerRadius, int resourceId) {
Glide.with(context)
.load(imgUrl != null ? imgUrl.trim() : imgUrl)
.asBitmap()
.centerCrop()
.placeholder(resourceId)
.error(resourceId)
.diskCacheStrategy(DiskCacheStrategy.ALL) //缓存策略
.priority(Priority.NORMAL) //下载的优先级
.into(new BitmapImageViewTarget(imageView) {
@Override
protected void setResource(Bitmap resource) {
RoundedBitmapDrawable circularBitmapDrawable =
RoundedBitmapDrawableFactory.create(context.getResources(), resource);
circularBitmapDrawable.setCornerRadius(cornerRadius);
imageView.setImageDrawable(circularBitmapDrawable);
}
});
}