我必须为ListView显示小缩略图图像,并在详细信息屏幕上显示完整图像。
我在两个布局中使用相同的图像。这是我的列表项<ImageView>
:
<ImageView android:layout_height="50dip"
android:layout_width="50dip"
android:id="@+id/item_view_img"
android:scaleType="fitXY">
</ImageView>
以下是我的详细视图<ImageView>
:
<ImageView android:id="@+id/update_details_img"
android:layout_width="289dip" android:layout_height="206dip"
android:src="@drawable/q_silhouette" android:paddingTop="10dp"
android:scaleType="fitXY" android:gravity="center">
</ImageView>
原始图像尺寸约为300x360。我的图像显示都不好看。 如何在不失去清晰度的情况下显示这些图像?
答案 0 :(得分:2)
这个问题不是Android问题,而是2D图形问题。目前有许多图形专家试图解决你遇到的确切问题。
在不失去原始保真度的情况下,无法更改图像尺寸。真正的问题在于保真度的损失是否会导致失去清晰度。大多数情况下,答案是保真度下降,清晰度也是如此。但是,有很多方法可以缓解这种情况。
作为一般经验法则,您可以将图像尺寸缩小到原始尺寸的1/2,而不会产生伪影。完成此操作后,您可能会经常缩小一次,具体取决于图像的复杂程度(颜色数量)。
或者,您可以将图像升迁到原始图像的大约1.75。你几乎不会再通过升级来欺骗系统。
但是,如果更改宽高比,所有投注均已关闭。这是因为它会以其他方式扭曲图像。在Android中,您可以通过将scaleType
属性设置为centerInside
值来避免更改XML中的宽高比。这将有助于显着地保持图像在范围内。您应该特别针对缩略图ImageView
执行此操作,除非您要使用与详细ImageView
相同的宽高比进行设置。
答案 1 :(得分:1)
由于您要使用这些不同的ImageView更改比率,因此您可能希望使用centerInside
或centerCrop
进行缩放。