【问题标题】:Image blurry on another device其他设备上的图像模糊
【发布时间】: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 dpi96 dpi 的标准(不足)分辨率。 hdpi 图像分辨率应为 240 dpi,xhdpi 图像分辨率应为 320 dpi,才能正常显示。

标签: android android-layout layout android-imageview android-screen-support


【解决方案1】:

在 Google 上快速搜索让我知道这些事实:

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.

一个非常快速的解决方法是:将图像放在/res/drawable-xhdpi 文件夹中(如果您没有该文件夹,只需创建它)。


还要考虑:

图像应以适当的 dpi 分辨率保存。
一个常见的错误是将它们保留在 72 dpi96 dpi 的标准(不足)分辨率。

hdpi 图像分辨率应为 240 dpixhdpi 图像分辨率应为 320 dpi,以便正确显示和缩放。

那么,该怎么办?

更改较大图像的分辨率,但不更改其大小(触摸分辨率时会自动缩放 - 因此,请将其重置为 1280*800)。
然后通过更改分辨率来制作较小的图像(它应该缩小到正确的尺寸 480*854 - 只需剪下超过 54 像素 - 顶部 27 像素和顶部 27 像素底部)。

将正确的图像放入适当的文件夹后,现在一切都应该很合适了。

【讨论】:

  • 那是我的错误!不过我还是很困惑。在 Galaxy Nexus 上,即使 dpi 不正确,图像也能正常显示,但在 Razr I 上,它并没有像在 Galaxy Nexus 上那样工作......很奇怪。但无论如何!谢谢:)
  • Razr I 与 Desire X 属于同一 hdpi 类别,但更大一些 - 540 x 960 pixels, 4.3 inches (~256 ppi pixel density)。您可以将其从较大的图像缩放但放大到 540*960,然后将其放入名为 drawable-hdpi-w540dp-h960dp 的文件夹中(或者可能是 drawable-hdpi-w360dp-h640dp - 我不清楚这些“分辨率”特定”文件夹 - 如果它分别在 px 或 dp 中)
猜你喜欢
  • 2020-01-03
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
相关资源
最近更新 更多