当前位置: 首页 > 知识库问答 >
问题:

mdpi、hdpi、xhdpi文件夹是如何工作的?

阎嘉荣
2023-03-14

摘自上面的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

我很困惑mdpi文件夹,hdpi文件夹,xhdpi文件夹应该放哪种尺寸的图片。我想开发一个可以在大多数Android手机和平板电脑上运行的应用程序?

共有3个答案

刘凡
2023-03-14

我自己对所有屏幕尺寸碎片感到困惑,但基本知识是:1.您需要在布局下创建各种文件夹才能处理图像 2.图像将存在于各种文件夹下的可绘制文件夹中。您应该有一个基本的/布局和/可绘制文件夹来伴随非特定文件夹 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”中获取资源。

扈运浩
2023-03-14

当您请求为其提供替代方案的资源时,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 会从可绘制的端口中选择可绘制的可绘制资源。

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

参考:Android如何找到最佳匹配资源

其他参考文献:密度独立性,提供替代资源和最佳实践

我会说你应该阅读支持多屏幕的完整页面,我认为没有什么比它更好的文档了...

华化
2023-03-14

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

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

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

 类似资料:
  • Android图像大小不同mdpi, hdpi, xhdpi, xxhdpi?我有一个mdpi图像20*20如何测量hdpi,xhdpi,xxhdpi如何使其他分辨率图像不同的屏幕大小,由于Android已设置标准尺寸?

  • 我有一个背景为我的应用程序在分辨率720x1280像素,1080x1920像素和1440x2560像素。 我应该将每个背景放在哪些文件夹(mdpi、hdpi、xhdpi和xxhdpi)中?

  • 哪些是可绘制的推荐尺寸:LDPI、MDPI、HDPI、XHDPI、XXHDPI、XXXHDPI或我可以使用相同大小的图像,并通过编程改变它,比如改变宽度和高度?

  • 研究android,现在我有一些图像可以放入可绘制的dirs(HDPI/LDPI/MDPI/XHDPI)。我读了很多书,但我还是不明白。每个目录的图像大小应该是多少?

  • 我有5个按钮,背景按钮图像尺寸267x63。我复制了ldpi mdpi hdpi xhdpi中分辨率为267x63的所有背景按钮。当我尝试运行我的应用程序时,按钮在2.7英寸QWGA中很大,但在平板电脑模式下很小。 在ldpi mdpi hdpi和xhdpi中,我的背景_按钮的最佳解决方案是什么? XML按钮: 如果我缩放背景按钮并设置: 我的按钮很严格...你能帮我吗?

  • 在mdpi模式下,我将中的设置为。我不知道在ldpi、hdpi、xhdpi和xxhdpi模式下,的最佳大小首选项(sp)是什么。 在ldpi、mdpi、hdpi、xhdpi、xxhdpi模式下,有没有办法自动将sp相互转换?