3

我目前被困在理解文档可能存在的问题上。

我一直在阅读有关支持多个屏幕的文档,我遇到了一些问题,特别是HTC DesireHTC Legend之间的布局差异。

据我了解,通过查看开发人员文档中的屏幕矩阵,Legend 是一个“普通”屏幕,而 Desire 是一个大屏幕。

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

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

4

3 回答 3

2

HTC Desire - 屏幕为 480x800 WVGA800 - 被认为是普通屏幕-hdpi,而 HTC Legend - 屏幕为 320 X 480 HVGA - 被认为是普通屏幕-mdpi(请参见此处的表 1 )。因此两种设备都使用普通的屏幕布局和 mdpi 图形,但由于 Desire 有 hdpi 屏幕,Android 会放大图形(通常结果是它们看起来很模糊)。为了使布局在 Desire 上看起来不错,您应该提供 hdpi 图形并将它们放在名为 drawable-hdpi 的文件夹中。

于 2011-03-15T11:24:48.900 回答
0

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

在此处查看 layout_weights,
http ://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

于 2011-03-15T11:21:20.927 回答
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);

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

我希望这会有所帮助,如果您仍有任何问题,请在下方评论,我们将看看如何解决它!

于 2011-03-15T11:26:19.837 回答