29

摘自上面的 Android 开发者指南链接:

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

所以我从这些尺寸的设计师那里得到了分辨率为每英寸 320 像素的图形(图像)

480x800 高清

720x1280 分辨率

800x1280 分辨率

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

4

4 回答 4

37

您可以创建不同的图形对象以用于不同的像素密度。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 将首先寻找与该设备的显示密度相匹配的图形。如果它没有找到一个,而是找到一个不同密度的,它将使用它并根据上述规则自动缩放图像。

于 2012-08-01T05:40:30.453 回答
11

当您请求提供替代资源的资源时,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 中选择可绘制对象。

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

在此处输入图像描述

Ref : Android 如何找到最匹配的资源

其他参考:密度独立提供替代资源最佳实践

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

于 2012-08-01T06:05:14.973 回答
3

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

特定屏幕文件夹的示例: /layout-hdpi /layout-xhdpi /drawable-hdpi /drawable-xhdpi

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

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

于 2012-08-01T05:40:22.090 回答
0

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

于 2012-08-01T05:43:08.563 回答