【问题标题】:Picasso and Coil inconsistency in image sizing?Picasso 和 Coil 图像尺寸不一致?
【发布时间】:2020-07-03 11:54:41
【问题描述】:
第一个屏幕截图是 Picasso,第二个屏幕截图是 Coil(都是最新版本)。知道为什么会这样吗?
毕加索:fit().centerInside()
线圈:scale(Scale.FILL).crossfade(true)(我也尝试过 FIT,结果相同)
ImageView: adjustViewBounds = true; scaleType = CENTER_INSIDE 具有 MATCH_PARENT 宽度和恒定高度(以像素为单位)。
【问题讨论】:
标签:
android
kotlin
picasso
coil
【解决方案1】:
线圈自动调整为ImageView的刻度类型,因此您无需配置刻度。
毕加索没有,毕加索的.fit().centerInside()实际上不等于ImageView的CENTER_INSIDE,而是FIT_CENTER(它会放大图像,以便至少有一个尺寸与ImageView匹配)。没有与 Picasso 等效的 CENTER_INSIDE,但这些是最接近的选项:
- 您可以简单地删除
.fit().centerInside(),如果图像较大则让ImageView 缩小图像,但如果图像非常大,则会消耗大量内存(如果大于最大纹理可能无法加载设备的大小)。
- 您可以在手动测量
ImageView 的大小后使用.resize(width, height).centerInside().onlyScaleDown()。
如果您希望 Coil 以与 Picasso 对 .fit().centerInside() 相同的方式调整图像大小,则只需将 ImageView 的比例类型更改为 FIT_CENTER。