如何使用宽高比在每个屏幕上设置图像适合度

时间:2019-02-13 20:17:17

标签: android imageview

我有一些来自服务器的图像,我对图像分辨率感到困惑。如何以纵横比在每个屏幕上显示完整的图像。

我需要覆盖整个屏幕,并且没有作物。每个分辨率屏幕上的图像都应完整。

   <ImageView
    android:id="@+id/photo_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:adjustViewBounds="true"
    android:scaleType="fitXY"/>

图片来自服务器

Picasso.with(context).load(shopDataForAdvs.get(position).getSrc()).fit().placeholder(R.drawable.product_image).error(R.drawable.product_image).into(imageView);

这里我的图片令人震惊

enter image description here

1 个答案:

答案 0 :(得分:1)

决定将我的评论升级为答案...

每个图像都有长宽比。每个电话都有长宽比。无法保证这两个宽高比都相同,因此您有三个选择:

1-拉伸图像以使其适合。 android:scaleType="fitXY"和毕加索fit()的调用就是这样做的。我不建议您这样做,因为图像看起来“很奇怪”,但这是有效的选择。

2-裁剪图像以使其适合。这将是android:scaleType="centerCrop"和毕加索centerCrop()。这将按比例放大图像(而不进行拉伸),直到图像的最小尺寸与手机的尺寸匹配为止,然后将图像裁剪为另一个尺寸。

3-信箱。这将是android:scaleType="centerInside"或毕加索centerInside()。这将放大图像(而不拉伸图像),直到图像的最大尺寸与手机的尺寸匹配,并将其余的ImageView空白。

我建议使用选项2,或者可能是选项3和2的组合(加载图像时不进行裁剪,但是如果用户需要,可以让用户放大)。