Res文件夹和dpi?

时间:2011-12-06 20:14:29

标签: android

我只想澄清一下,使用较低分辨率设备的android中的res文件夹,它们会自动从ldpi文件夹中获取相同的命名资源?这样我可以为较小的屏幕制作不同的资产吗?

我是否需要在所有4个文件夹(ldpi-xhdpi)中拥有资源才能在所有大小的设备上运行?或者,如果所有设备的资产都相同,我可以在一个文件夹中拥有资产吗?

如果我的资产只对低分辨率设备有所不同,我是否需要镜像每个其他文件夹的内容,以便它们都具有相同的资产?

2 个答案:

答案 0 :(得分:1)

我建议彻底阅读this article以了解其确切的工作方式,但基本上,它会找到最接近匹配的大小资源,所以不,你不需要镜像所有文件夹必然。

来自the qualifiers section particularly,这句话很好地解释了这一点。

  

请注意,当Android系统选择要使用的资源时   运行时,它使用某些逻辑来确定“最佳匹配”   资源。也就是说,您使用的限定符不必完全匹配   所有情况下的当前屏幕配置,以便系统   使用它们。具体而言,在根据大小选择资源时   限定符,系统将使用为屏幕设计的资源   如果没有更好的资源,则小于当前屏幕   匹配(例如,大尺寸屏幕将使用正常大小的屏幕   必要的资源)。但是,如果唯一可用的资源是   大于当前屏幕,系统将不会使用它们和您的   如果没有其他资源与设备匹配,应用程序将崩溃   配置(例如,如果所有布局资源都标记为   xlarge限定符,但设备是正常大小的屏幕)。对于   有关系统如何选择资源的更多信息,请阅读如何   Android找到最匹配的资源。

答案 1 :(得分:0)

让我们将你的问题分成三个单独的问题。

  

我只想用android中的res文件夹来澄清   解析设备,它们自动从中获取相同的命名资产   ldpi文件夹?这样我可以为较小的资产制作不同的资产   屏幕?

很简单,是的。这就是系统的用途。只要您使用同名资产,Android就会自动选择最适合您设备的资源,具体取决于屏幕的dpi。

  

我是否需要在所有4个文件夹(ldpi-xhdpi)中拥有资源   在各种尺寸的设备上工作?或者我可以在一个文件夹中拥有资产   所有设备的资产都相同?

您不需要所有文件夹中的资源都可以在所有设备上工作。但是,如果您希望正常运行,则您需要所有文件夹中的资源,所有文件夹都有自己的尺寸,具体取决于文件夹。如果您只使用一个具有一个资产大小的文件夹,它仍然有效。您的资产将被Android本身缩放,这可能会导致某些资产在某些更高/更低的dpi设备上看起来非常难看。更不用说缩放可能导致整个布局陷入困境。

  

如果我的资产仅与低分辨率设备不同,那我该怎么办?   需要镜像每个其他文件夹的内容,以便它们全部   拥有相同的资产?

“对于低分辨率设备只有不同”,您的意思是整个资产是不同的吗?例如蓝色图像而不是红色图像?如果是这样,您仍然需要使用与其他文件夹中的资源相同的名称。实际内容可能不同,操作系统仅在获取资产时检查名称。

有关如何支持多种屏幕尺寸的详细信息,请尝试使用本指南:

http://developer.android.com/guide/practices/screens_support.html