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

时间:2013-06-03 04:49:51

标签: android android-layout android-resources android-resolution

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

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

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。如果HD(720p)只是HDPI,那么什么设备/分辨率支持XHDPI?

  3. 我已在此处提出相关问题:How to set layout on 7" two different tablet?

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

2 个答案:

答案 0 :(得分:12)

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

Android自身的AutoMatic Sc​​aling:

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不同的屏幕,所有图像在屏幕上看起来都是相同的。

答案 1 :(得分: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