【发布时间】:2014-07-28 20:34:46
【问题描述】:
首先,我想提前道歉,因为我确定以前有人问过这种问题,但即使我在这些问题上找了大约 2 周时间,我也无法弄清楚我是什么做错了。
这是我在活动中加载图像的地方:
ImageView image = (ImageView) findViewById(R.id.shop_Image) ;
image.setScaleType(ImageView.ScaleType.CENTER_CROP) ;
String mDrawableName = data.vec.elementAt(id).fuenf ;
if ( mDrawableName.equals("leer") )
mDrawableName = "ic_launcher" ;
int resID = getResources().getIdentifier(mDrawableName , "drawable", etPackageName());
image.setImageResource(resID) ;
这是 xml 文件:
<LinearLayout
android:id="@+id/shop_Layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FDFDFD"
android:orientation="vertical" >
<ImageView
android:id="@+id/shop_Image"
android:contentDescription="@string/shop_image"
android:layout_width="match_parent"
android:layout_height="400dp"
android:scaleType="centerCrop"
android:adjustViewBounds="true"
android:src="@drawable/ic_launcher" />
[...]
结果如下:
在 Galaxy Nexus、Nexus 5 或三星 S3 上,它看起来像这样:
在 Razr I 或 HTC Desire X 上看起来像这样:
我知道上述显示图像正确的设备的显示屏至少为 4.7 英寸,而图像模糊的设备则为 4.3 英寸或 4 英寸。
即使我将这些图像放在不同的可绘制文件夹中,我仍然会得到这些令人不快的结果。
如果需要更多代码示例,请告诉我。
PS:对不起,我还是个新手:)
【问题讨论】:
-
尝试使用 dip 代替 dp 进行测量。 dp = 密度像素和 dip = 密度无关像素。这些设备的 ppi 确实不同,所以这可能会有所帮助。
-
据我所知 dp 和 dip 是相同的。我仍然可以尝试一下,谢谢:)
-
@MarcusGabilheri VollNoob 是对的。 dip 只是 dp 的另一个名称。除了名称之外,这两个单位之间没有区别。
-
@VollNoob Desire X 规格:
480 x 800 pixels, 4.0 inches (~233 ppi pixel density) - hdpi,三星 S3 规格:720 x 1280 pixels, 4.8 inches (~306 ppi pixel density) - xhdpi- 您应该阅读此内容:developer.android.com/guide/practices/screens_support.html。快速修复:将图像放入drawable-xhdpi(没有文件夹?创建它) -
图像是否以正确的 dpi 分辨率保存?一个常见的错误是将它们保留在 72 dpi 或 96 dpi 的标准(不足)分辨率。 hdpi 图像分辨率应为 240 dpi,xhdpi 图像分辨率应为 320 dpi,才能正常显示。
标签: android android-layout layout android-imageview android-screen-support