我有一些来自服务器的图像,我对图像分辨率感到困惑。如何以纵横比在每个屏幕上显示完整的图像。
我需要覆盖整个屏幕,并且没有作物。每个分辨率屏幕上的图像都应完整。
<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);
这里我的图片令人震惊
答案 0 :(得分:1)
决定将我的评论升级为答案...
每个图像都有长宽比。每个电话都有长宽比。无法保证这两个宽高比都相同,因此您有三个选择:
1-拉伸图像以使其适合。 android:scaleType="fitXY"
和毕加索fit()
的调用就是这样做的。我不建议您这样做,因为图像看起来“很奇怪”,但这是有效的选择。
2-裁剪图像以使其适合。这将是android:scaleType="centerCrop"
和毕加索centerCrop()
。这将按比例放大图像(而不进行拉伸),直到图像的最小尺寸与手机的尺寸匹配为止,然后将图像裁剪为另一个尺寸。
3-信箱。这将是android:scaleType="centerInside"
或毕加索centerInside()
。这将放大图像(而不拉伸图像),直到图像的最大尺寸与手机的尺寸匹配,并将其余的ImageView空白。
我建议使用选项2,或者可能是选项3和2的组合(加载图像时不进行裁剪,但是如果用户需要,可以让用户放大)。