android 如何在jetpack compose中动态设置contentScale,Coil Image Loading

9rygscc1  于 12个月前  发布在  Android
关注(0)|答案(1)|浏览(135)

我有图像存储在服务器或存储。
如果是Landscape Image,我想将contentScale设置为CROP,否则FIT

AsyncImage(
     modifier = modifier
                    .fillMaxWidth()
                    .height(250.dp)
                    .clickable { onImageClick(it) },
     model = imageUrl,
     contentDescription = null,
     contentScale = ContentScale.Fit,
)

字符串
所以这里contentScale被设置为FIT,但我不知道如何根据图像方向自动设置它。
有没有办法做这样的伪代码->

if(img.width > img.height){
   contentScale = ContentScale.CROP // since it is landscape 
 } else {
   contentScale = ContentScale.FIT
 }

vcirk6k6

vcirk6k61#

你可以尝试使用变量,然后像这样设置它们:

val intrinsicWidth = img.intrinsicSize.width
val intrinsicHeight = img.intrinsicSize.height

字符串
//然后使用它

contentScale = if (intrinsicWidth > intrinsicHeight) ContentScale.Crop else ContentScale.Fit


//然后在AsyncImage中:

AsyngImage(modifier = modifier
                .fillMaxWidth()
                .height(250.dp)
                .clickable { onImageClick(it) },
 model = imageUrl,
 contentDescription = null,
 contentScale = if (img.intrinsicSize.width > img.intrinsicSize.height) ContentScale.Crop else ContentScale.Fit)

相关问题