You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glide中centerCrop与optionalCenterCrop方法的区别是什么?

Glide centerCrop() 与 optionalCenterCrop() 的效果差异

核心行为区别

  • centerCrop():强制对所有加载的资源执行CenterCrop变换,覆盖ImageView默认的缩放规则。不管是占位图、错误图,还是最终加载成功的原图,也不管资源尺寸是否大于ImageView尺寸,都会统一执行裁剪逻辑:将资源等比例缩放到填满ImageView的边界,裁掉超出边界的部分,保证内容居中。
  • optionalCenterCrop():仅对加载成功的原图执行条件性的CenterCrop变换:只有当原图的宽高都大于ImageView的宽高时才会触发裁剪;如果原图尺寸小于等于ImageView,就不会执行任何裁剪变换,直接按原图原始比例展示。同时该方法不会对placeholder、error等占位资源做任何变换,占位图会沿用ImageView本身的scaleType规则展示。

观察不到optionalCenterCrop()效果的常见原因

如果使用optionalCenterCrop()时没有明显效果,通常是两个原因导致的:

  1. 测试用的原图尺寸小于等于当前ImageView的尺寸,此时不会触发裁剪逻辑,看起来和不加裁剪的效果一致
  2. 观察的是占位图的展示效果,optionalCenterCrop()不会处理占位资源,所以占位图的展示和没有加裁剪配置时完全一样

效果对比示例(ImageView固定为200*200dp)

  • 当原图尺寸为500300px(大于ImageView)时:两个方法效果完全一致,都会裁剪为200200的居中内容
  • 当原图尺寸为100100px(小于ImageView)时:centerCrop()会强制将图片放大到200200后裁剪,图片可能出现模糊;optionalCenterCrop()不做放大裁剪,100*100的原图居中展示在ImageView中
  • 当占位图尺寸为100100px时:centerCrop()会强制将占位图放大裁剪到200200;optionalCenterCrop()不会处理占位图,直接沿用ImageView的scaleType展示

内容的提问来源于stack exchange,提问作者Rakesh L

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:24:03