mdpi,hdpi,xhdpi文件夹的工作原理如何?

时间:2012-08-01 05:26:33

标签: android resolution

从上面的Android开发者指南链接中提取:

  

320dp:典型的手机屏幕(240x320 ldpi,320x480 mdpi,480x800 hdpi等)。
  480dp:像Streak(480x800 mdpi)这样的tweener平板电脑   600dp:7“平板电脑(600x1024 mdpi)   720dp:10英寸平板电脑(720x1280 mdpi,800x1280 mdpi等)

所以我得到的图形(图像)分辨率为每英寸320像素,只有这些尺寸

480x800 hdpi

720x1280 mdpi

800x1280 mdpi

我很困惑应将哪个尺寸的图像放在mdpi文件夹,hdpi文件夹和xhdpi文件夹中。我想制作一个可以在大多数Android手机和平板电脑上运行的应用程序吗?

4 个答案:

答案 0 :(得分:36)

您可以创建不同的图形对象,以便在不同的像素密度下使用。 Android将mdpi(160像素/英寸)视为基本密度。因此对于mdpi设备,1 dp = 1像素。在更高的密度下,每英寸有更多像素(hdpi为240,xhdpi为320)。无论设备像素密度如何,Android都会尝试使图形图像在屏幕上占据相同的物理尺寸。因此,如果它找到的是mdpi资源,并且设备是hdpi,它将按240/160 = 150%缩放图形,并且它将使xhdpi的图形大小加倍。

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

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

答案 1 :(得分:10)

当您请求为其提供备选方案的资源时,Android会根据当前设备配置选择在运行时使用哪个备用资源。为了演示Android如何选择替代资源,假设以下可绘制目录各自包含相同图像的不同版本:

drawable/
drawable-en/
drawable-fr-rCA/
drawable-en-port/
drawable-en-notouch-12key/
drawable-port-ldpi/
drawable-port-notouch-12key/

并假设以下是设备配置:

Locale = en-GB 
Screen orientation = port 
Screen pixel density = hdpi 
Touchscreen type = notouch 
Primary text input method = 12key

通过将设备配置与可用的替代资源进行比较,Android会从 drawable-en-port选择drawables。

系统决定使用以下逻辑来使用哪些资源:

enter image description here

参考:How Android Finds the Best-matching Resource

其他参考文献:Density independenceProviding Alternative ResourcesBest Practices

我会说你应该阅读完整的页面 Supporting Multiple Screens,我认为没有什么比它更好的文档...

答案 2 :(得分:3)

我对所有屏幕尺寸碎片感到困惑,但基本知识是: 1.您需要在布局下创建各种文件夹才能处理图像 2.图像将存在于各种文件夹下的drawables文件夹中。 3.您应该有一个基本/布局和/ drawable文件夹,以配合非特定文件夹 4.从xhdpi开始工作,然后缩小图像!

特定屏幕文件夹的示例: /布局华电国际 /布局xhdpi /提拉 - 华电国际 /抽拉-xhdpi

据我所知: 480 x 800是hdpi(旧款手机,如S2,HTC Desire等) 720 x 1280是xhdpi(新手机,如S3,Galaxy Nexus等)

基本上,根据手机的不同,Android会从必要的文件夹中获取资源,如果没有,那么它将从主'\ layout'或'\ drawable'文件夹中获取。例如,如果文件夹存在,在Galaxy Nexus上运行的应用程序将从“\ layout-xhdpi”获取资源。

答案 3 :(得分:0)

是的,您可以制作一个应用,但需要创建文件夹:/ res / drawable,/ res / drawable-mdpi,/ res / drawable-hdpi并为所有屏幕尺寸添加内容