【多张图片时,圆角处理不一致】Glide 加载圆角图片大小不一的问题

问题描述:图片如下:两张图片大小不一样,比例也不一样。imageView的控件大小:540px X 720px (3:4)

(第一张图是3:4的宽高比)(第二张图是7.5:3的宽高比),导致到圆角不一样

代码如下:

public class GlideImageLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            Glide.with(context)
                    .load(path)
                    .placeholder(R.mipmap.adversetiment_none)
                    .error(R.mipmap.adversetiment_none)
                    .transform(new GlideRoundTransform(mContext, 4))
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(imageView);
        }

    }

方法一:解决此问题:代码如下(有一点,必须图片的的比例是一样,是3:4)

public class GlideImageLoader extends ImageLoader {
        @Override
        public void displayImage(Context context, Object path, ImageView imageView) {
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            Glide.with(context)
                    .load(path)
                    .placeholder(R.mipmap.adversetiment_none)
                    .error(R.mipmap.adversetiment_none)
                    //重写图片大小
                    .override(540,720)
		    //transfrom的同时传入一个Fitcenter(),先将图片变换为固定的大小
                    .transform(new FitCenter(mContext),new GlideRoundTransform(mContext, 4))
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(imageView);
        }

    }

总结:使用了transfrom的重载方法,在传进去transfrom的同时传入一个Fitcenter(),先将图片变换为固定的大小,然后在此基础上在进行裁剪,再次运行之后所有的项的圆角就看着一般大了。

注意:图片的比例要一致,才能用上面的代码解决问题。

要想图片完全不限制比例,宽高,方法还没有找到。

方法二:还有一个小方法可以实现,不限制比例,宽高,如下图 (圆角没有问题,但图片会按中心裁切,会显示不完整):

代码如下:FitCenter 改成 CenterCrop 就行
.transform(new CenterCrop(mContext),new GlideRoundTransform(mContext, 4))
 

方法三: glide 版本:4.8.0  

import com.bumptech.glide.load.resource.bitmap.RoundedCorners;

// 设置glide 圆角
RequestOptions  options = new RequestOptions().error(R.drawable.live_def_pic_1);
// 通过transforms,8dp转成px ,  工具类
options.transforms(new RoundedCorners(DpPxConverter.dp2px(context, 8)));

Glide.with(context)
    .load(bannerFile)
    // 设置options
    .apply(options)
    .into(imageView);
xml文件
<ImageView
            android:id="@+id/showadpic"
            android:layout_width="270dp"
            android:layout_height="wrap_content"  
            android:layout_gravity="center" />

注意:1、发现xml里给layout_width =260dp 和  layout_height =330dp  给了固定的宽度高度,原始图片是1200px*1520px  此时圆角就不起作用啦。好奇怪啊,为啥?有知道的朋友可以告诉我

2、发现xml里给layout_width =260dp 和  layout_height =wrap_content  给了固定的宽度,高度自适应,此时图片特别小比如 100px*150px,在imageview里显示的图片时不会按260dp来显示,估计是按图片的真实大小显示的,特别的小(圆角是有效果的!)。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值