1

我正在尝试在我当前的应用程序上支持 mdpi、hdpi 和 xhdpi。问题是我正在从网络上获取图像(个人资料图片)。我使用的是图像视图height = 200dp,即使我已经阅读了大量关于 dp 和 dpi 的教程和文档,我仍然没有得到它们。

所以我的问题是,在 hdpi 手机(atrix 2)上,图像大约占屏幕的 1/3,这对我来说是完美的。但是在 mdpi (galaxy ace) 上它几乎需要 2/3。

为图像视图(来自网络,而不是资源)设置高度以支持 mdpi 和 hdpi 的最佳方法是什么。

谢谢

<ImageView
    android:id="@+id/expositor_image"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_below="@+id/expositor_info_header"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="-27dp"
    android:contentDescription="@string/misc_placeholder"
    android:scaleType="centerCrop" />

基本上我的问题是 200dp 在 mdpi 和 hdpi 上占用不同的屏幕百分比

4

1 回答 1

0

对于初学者,您需要在 ImageView 的 xml 定义中设置一个 scaleType(尝试“center_inside”)。

如果您提供一些代码(特别是您的布局 xml 文件),我可能会提供更多帮助。

更新

现在,这可能不完全是你的问题,但它是其中的一部分。DP(或 DPI,它们是同一件事)调整屏幕密度(每英寸像素数),而不是屏幕尺寸。这意味着 200dp x 200dp 的图像在两个屏幕上的英寸大小大致相同,而不是相同的屏幕百分比。

规格:Atrix 960 × 540 ( https://en.wikipedia.org/wiki/Motorola_Atrix_2#Features ) Galaxy Ace 480 x 320 ( https://en.wikipedia.org/wiki/Samsung_Galaxy_Ace )

由于 Atrix 是 hdpi,而 hdpi 是 1.5 倍数,因此 200dp 将占用 300 像素的实际像素,或者您指出的大约 1/3 (300/960) 屏幕。

在 mdpi Ace 上,200dp 平均转换为 200px,应该更接近屏幕的 1/2。但是,随着操作栏的添加占用了屏幕空间,它可能看起来更多。

处理像王牌这样的非常小的屏幕的最佳方法......好吧,我的正常解决方案是不太支持它们,至少在我的第一次通过时不是,因为它们非常罕见。但是,如果您愿意,最好的方法是提供替代布局。

例如:

创建一个名为 layout-large 的文件夹(或类似的文件夹,请参阅:http: //developer.android.com/guide/topics/resources/providing-resources.html#Compatibility)。

在该文件夹中复制现有的 xml 文件。(名称必须完全相同)

修改 layout/ 中的文件,使其在较小的屏幕上效果更好。

本质上,如果设备有一个“大”屏幕或以上(现在基本上是标准),它将使用 layout-large/ 文件夹中的布局。

否则,它将使用 layout/ 文件夹中的默认布局。

如果您认为这种解释不是正在发生的事情,请提供屏幕截图以验证布局实际上没有表现出应有的行为。

于 2013-05-08T02:32:21.303 回答