好的,想象一下你有一个背景图像(缩放以填充设备的整个宽度/高度),其中包含一些随机艺术和两个矩形。现在,如果我想在每个矩形中放置一个图像,我看不出如何使用dp单位这样做。来自Android文档:
例如,带有一个视图 layout_width =“100dp”测量100 中密度屏幕上的像素宽 并且系统将其扩展到150 在高密度屏幕上像素宽,所以 视图大致占据 屏幕上的物理空间相同。
我看到的问题是,如果我有两个具有相同分辨率的设备,但一个是中等密度而另一个是高密度,则高密度图像将缩放得太大。
这是否意味着无论密度/分辨率如何,唯一可用于保证图像大小相同的选项是合并转换功能?这似乎违背了dp存在的原因,这让我相信我对此的理解不正确。任何见解都会很棒!
答案 0 :(得分:0)
如果两个设备具有相同的分辨率,但密度不同,则屏幕尺寸会有所不同,因此,图像的缩放比例会有所不同。这可能是你想要的,因为背景实际大小也取决于屏幕尺寸。
如果由于某种原因,您希望将图像设置为特定尺寸,而不管密度和分辨率如何,则使用尺寸单位in
(英寸)或mm
(毫米)。
编辑:如果它们具有相同的大小和不同的密度,则它们具有不同的分辨率,因此您无法使用px来设置正确的大小。您仍需要考虑密度才能使用相同数量的屏幕。除此之外,使用不同的分辨率,您可以选择为每个分区创建布局,即:res/layout-normal
,res/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中提供不同的艺术资产,以避免此问题。