使用dp单位将图像放置在特定位置时的尺寸混淆

时间:2011-06-08 02:46:09

标签: android android-layout

好的,想象一下你有一个背景图像(缩放以填充设备的整个宽度/高度),其中包含一些随机艺术和两个矩形。现在,如果我想在每个矩形中放置一个图像,我看不出如何使用dp单位这样做。来自Android文档:

  

例如,带有一个视图   layout_width =“100dp”测量100   中密度屏幕上的像素宽   并且系统将其扩展到150   在高密度屏幕上像素宽,所以   视图大致占据   屏幕上的物理空间相同。

我看到的问题是,如果我有两个具有相同分辨率的设备,但一个是中等密度而另一个是高密度,则高密度图像将缩放得太大。

这是否意味着无论密度/分辨率如何,唯一可用于保证图像大小相同的选项是合并转换功能?这似乎违背了dp存在的原因,这让我相信我对此的理解不正确。任何见解都会很棒!

2 个答案:

答案 0 :(得分:0)

如果两个设备具有相同的分辨率,但密度不同,则屏幕尺寸会有所不同,因此,图像的缩放比例会有所不同。这可能是你想要的,因为背景实际大小也取决于屏幕尺寸。

如果由于某种原因,您希望将图像设置为特定尺寸,而不管密度和分辨率如何,则使用尺寸单位in(英寸)或mm(毫米)。

编辑:如果它们具有相同的大小和不同的密度,则它们具有不同的分辨率,因此您无法使用px来设置正确的大小。您仍需要考虑密度才能使用相同数量的屏幕。除此之外,使用不同的分辨率,您可以选择为每个分区创建布局,即:res/layout-normalres/layout-large等。

答案 1 :(得分:0)

你是对的,这是Android开发中比较混乱的部分之一。

如果对于相同的分辨率,设备A是中等密度而设备B是高密度,则设备A将比设备B更大。

要为此添加更多数字,我们可以说mdpi bg图像是100x100像素,我们试图放置一个10,10到15,15的矩形。如果我们用px定义偏移量,我们将得到以下结果:

设备A(mdpi):bg图像为100x100px,偏移量为10px x 10px

设备B(hdpi):bg图像为150x150px,偏移量为10px x 10px

相反,如果偏移量为dp,则结果为:

设备A(mdpi):bg图像为100x100px,偏移量为10px x 10px

设备B(hdpi):bg图像为150x150px,偏移量为 15px x 15px

dp的美妙之处在于它们与其他绘图成比例缩放。

更新:根据您对Aleadam的回复,您可以根据说明here.

在drawable,drawable-hdpi中提供不同的艺术资产,以避免此问题。