如何知道哪些手机支持哪种布局(hdpi,mdpi和xhpi)?

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. Samsung grand (480*800)HTC wild fire S (320*480) 都支持MDPI。这两种屏幕具有非常不同的分辨率,但却具有相同的布局类型?

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

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

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


你为什么需要知道设备型号名称? - ozbek
您不应该担心所有设备的屏幕尺寸。只需制作不同的布局(normal、hdpi、xhdpi),每个设备都会根据其dpi运行布局。顺便说一下... Galaxy Note 2具有267 dpi的屏幕。因此,它将使用xhdpi布局。 - Amit Jayant
我之所以提出这个问题,是因为我正在使用WebView,在其中可以显示YouTube视频,因此在所有设备上都会显示不同的GUI。 - duggu
如果我想展示来自外部来源的图片,我也需要这个。 - Markus
2个回答

14

Android将mdpi(160像素/英寸)视为基本密度。因此对于mdpi设备1 dp = 1 pixel。在更高的密度下,每英寸有更多的像素(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不同的情况下,所有图像在屏幕上看起来都是相同的大小。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接