2011-03-15 190 views
3

我目前被困在理解文档可能存在的问题。屏幕尺寸和布局

我一直在阅读有关supporting multiple screens的文档,并且我在HTC DesireHTC Legend之间存在一些与layoyt区别的问题。

从我的理解中,通过查看开发人员文档中的屏幕矩阵,Legend是一个“正常”屏幕,Desire是一个大屏幕。

添加布局目录layout /,layout-small /和layout-large解决了我的小屏幕设备问题。但是现在,当试图让这个应用在Desire和Legend中看起来很好的时候,看起来他们都使用了正常的屏幕布局。

任何提示,解决方案或解释?

回答

2

的HTC Desire - 其屏幕是480x800的WVGA800 - 被认为是正常的屏幕,华电国际,而HTC传奇 - 其屏幕为320×480的HVGA - 被认为是正常屏幕-mdpi(请看表1 here)。因此,两个设备都使用普通的屏幕布局和mdpi图形,但由于Desire具有hdpi屏幕,因此Android会扩大图形(通常结果是它们看起来模糊)。为了使布局在Desire上看起来很好,您应该提供hdpi图形并将它们放在名为drawable-hdpi的文件夹中。

+0

这解决了我的问题 - 为特定设备添加额外的可绘制设计使设计工作。 – Repox 2011-03-15 11:43:27

0

在布局中,我使用布局权重来指定尺寸。这将在很大程度上帮助在各种屏幕设备上运行应用程序。

检查关于这里layout_weights,
http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

+0

我不确定这是如何回答我的问题 - 我想知道为什么,根据他们使用相同布局的两个设备的文档和规格,尽管我指定了不同的布局。这必须有一个解释可以帮助解决问题。 – Repox 2011-03-15 11:25:41

0

尝试在普通布局中使用wrap_content,fill_parent或dp单元。 无论如何,你正在做的几个布局是一个单调乏味,但也许更好的选择。 在您的清单

<supports-screens 
    android:largeScreens="true" 
    android:smallScreens="true" 
    android:normalScreens="true" 
/> 

设置此并获得使用屏幕的尺寸与

DisplayMetrics displaymetrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
height = displaymetrics.heightPixels; 
width = displaymetrics.widthPixels; 
Log.e("FirstImage", "Width = "+width+"Height = "+height); 

一旦你的屏幕,我想你知道如何给它分配一个特定的预定义的大小(由你)布局。

我希望这会有所帮助,如果您仍然有任何疑问,请在下面留言,我们将会看到如何解决它!