Android:支持多屏

时间:2014-01-21 06:57:24

标签: android screen resolution

我正在尝试编程到多个屏幕。 我目前有两个设备:

三星Galaxy S2屏幕为4英寸:480x800 密度:1.5 高度(dp):533.3333 宽度(dp):320.0 screenLayout:34 = 0010 0010

Samsung Young的屏幕为3.2英寸:320x480 密度:1.0 高度(dp):480.0 宽度(dp):320.0 screenLayout:18 = 0001 0010

因此,设备的密度和screenLayout不同(SCREENLAYOUT_LONG_YES与SCREENLAYOUT_LONG_NO)。

我准备了两种尺寸的图像按钮,并将它们放入drawable-mdpi(用于更高分辨率)和drawable-ldpi(用于较低分辨率)。图像按钮具有相同的名称。

我还写了两个不同的布局,但是,使用相同的文件名并将它们放在布局文件夹中(对于更高的分辨率)和布局 - 小布局(对于较低的分辨率)。

我没有更改Java代码,也就是说,它没有检查选择高分辨率还是低分辨率的分辨率。

问题是,这两个设备在布局中都是同一个文件夹,都是可绘制的。

我做错了什么? 在android中处理多种屏幕尺寸的正确方法是什么?

谢谢! AJ

2 个答案:

答案 0 :(得分:2)

在每个文件夹中添加布局

res/layout/my_layout.xml             // layout for normal screen size ("default")
res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml
清单文件中的

<supports-screens android:resizeable=["true"| "false"]
                  android:smallScreens=["true" | "false"]
                  android:normalScreens=["true" | "false"]
                  android:largeScreens=["true" | "false"]
                  android:xlargeScreens=["true" | "false"]
                  android:anyDensity=["true" | "false"]
                  android:requiresSmallestWidthDp="integer"
                  android:compatibleWidthLimitDp="integer"

以及更详细的link

答案 1 :(得分:0)

我认为您只是为您的设备使用了错误的文件夹。

正如您在Range of screen supported部分所看到的,范围没有严格的界限。

了解您的设备有哪些DPI非常重要:

  • Galaxy S2:217 dpi
  • Samsung Young:133 dpi

在上面发布的linke的“使用配置限定符”部分中,您有一个表格,其中描述了密度:

  • ldpi:~120dpi
  • mdpi:~160dpi
  • hdpi:~240dpi
  • xhdpi:~320dpi

因此,请尝试将您的布局和图片从mdpi放到hdpi个文件夹,然后从ldpi放到mdpi

您也可以尝试使用new size qualifiers,您可以在其中根据例如设备的最小宽度。