10

我对如何确定哪些手机支持哪些布局类型有点困惑。我做了一些研究,但还没有找到令人满意的答案。

例如,我找到了以下指南:

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp

但是,我仍然有一些担忧:

  1. 三星grand(480*800)HTC野火S(320*480)均支持MDPI。这些屏幕具有非常不同的分辨率,但具有相同的布局类型?

  2. Galaxy note 2 (1280*720) 支持 HDPI。如果 HD (720p) 只有 HDPI,什么设备/分辨率支持 XHDPI?

  3. 我已经在这里问过一个相关的问题:如何在 7" 两个不同的平板电脑上设置布局?

  4. 然而,我最重要的问题是:我如何知道哪些设备或屏幕分辨率支持每种布局类型?

4

2 回答 2

13

Android 将 mdpi (160 像素/英寸) 视为基本密度。所以对于mdpi 设备1 dp = 1 像素。在更高的密度下,每英寸有更多的像素(hdpi 为 240,xhdpi 为 320)。

Android 本身的自动缩放:

Android 试图让图形图像在屏幕上占据相同的物理尺寸,而不管设备像素密度如何。因此,如果它找到的只是一个 mdpi 资源,并且设备是 hdpi,它会将图形缩放 240/160 = 150%,并将 xhdpi 的图形大小加倍。

使用不同版本的图形:

如果您不希望这种自动缩放(这会使图形看起来很差),您可以简单地提供您自己的图形资源版本以用于更高的密度。这些图形的大小应与 Android 缩放 mdpi 资源的大小相同。

注意:存储在图像文件中的像素/英寸与此无关。这完全取决于您将图形文件放在项目资源目录中的位置。任何放置在 res/drawable 中的图形都被假定为适合 mdpi 显示的大小,就像放置在 res/drawable-mdpi 中的图形一样。它在 res/drawable-hdpi 中找到的图像文件被假定为适合 hdpi 显示等。当您的程序在特定设备上运行时,Android 将首先查找与该设备的显示密度匹配的图形。如果它没有找到一个,而是找到一个不同密度的,它将使用它并根据上述规则自动缩放图像。

由于 ldpi、mdpi 和 hdpi 指的是屏幕密度,这意味着一英寸可以容纳多少像素

它们之间的像素比率为:

ldpi = 1:0.75
mdpi = 1:1
hdpi = 1:1.5
xhdpi = 1:2
xxhdpi = 1:3

所以让我们拍摄一张大小约为 100X100 的图像

for mdpi it should be 100X100
for ldpi it should be 75X75
for hdpi it should be 150X150
for xhdpi it should be 200X200
for xxhdpi it should be 300X300

这样,对于尺寸相同但 DPI 不同的屏幕,所有图像在屏幕上看起来都是相同的尺寸。

于 2013-08-10T05:10:15.320 回答
0

查看这些细节:android 自己管理所有这些,您只需在相关文件夹中提供布局和图像

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 // layout for extra large in landscape orientation

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density
于 2013-06-03T04:55:27.280 回答