2013-05-08 77 views
1

我试图在我当前的应用程序上支持mdpi,hdpi和xhdpi。问题是我从网上抓取图片(配置文件图片)。我正在使用height = 200dp的imageview,事情是,即使我已经阅读了大量有关dp和dpi的教程和文档,但我仍然没有得到它们。从网络的Android图像大小

所以我的问题是,在hdpi手机上(ATRIX 2)图片后在屏幕上,这是非常适合我的约1/3。但在mdpi(银河王牌),它需要近2/3。

什么是设置高度为ImageView的(来自网络,而不是资源),以支持MDPI和华电国际的最佳途径。

感谢

<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

回答

0

首先,你会想设置一个scaleType(尝试“center_inside”)在ImageView的xml定义中。

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

更新

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

规格: 的Atrix 960×540(https://en.wikipedia.org/wiki/Motorola_Atrix_2#Features) 银河王牌480×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的屏幕。但是,随着屏幕房地产的增加,看起来可能更多。

对付像王牌非常小屏幕的最佳方式......嗯,我正常的解决方案是不支持他们很好,至少不是我的第一关,因为他们是非常罕见的。但如果你想,最好的办法是提供备用布局。

例如:

创建名为布局大文件夹(或类似的,参见:http://developer.android.com/guide/topics/resources/providing-resources.html#Compatibility)。

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

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

本质上,如果该装置具有一个“大”上面的屏幕或(其中,大基本上是标准的这些天),它会在布局大/文件夹使用的布局。

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

如果您认为此解释不是正在发生的情况,请提供屏幕截图以验证布局实际上并不像应该那样。

+0

那里。我编辑并添加了代码 – 2013-05-08 19:46:57