gpt4 book ai didi

android - 如果使用可绘制对象引用,可绘制对象不会因缺少密度桶而缩放

转载 作者:行者123 更新时间:2023-11-30 02:42:05 24 4
gpt4 key购买 nike

首先,介绍一下我正在做的事情的背景。 如果您熟悉一般的引用(简单概念),请直接跳到第 2 部分

1 密度引用的概念

通常我们在drawable-mdpidrawable-hdpi等文件夹中使用drawable。示例:

/drawable-mdpi
./figure.png (24x24 pixels)
/drawable-hdpi
./figure.png (36x36 pixels)
[...]

但是,实现(相同?)行为的另一种方法是在 drawable-nodpi 中定义不同尺寸的相同 drawable,然后在 values-mdpi< 中引用每个尺寸values-hdpi 等通过 drawable 引用。示例:

/drawable-nodpi
./figure_24.png
./figure_36.png
/values-mdpi
./refs.xml
/values-hdpi
./refs.xml

每个 refs.xml 文件都应该包含这样的行(例如 /values-mdpi/refs.xml):

<item name="figure"
type="drawable">@drawable/figure_24</item>

那样的话,您可以像没有引用一样引用相同的 R.drawable.figure。当您需要在不调整大小的情况下处理不同尺寸的相同图像(例如,在 24/36/48/72 和 48/72/96/144 中使用相同的图像)时,我发现这很有用,因为您可以引用相同的图像两次(例如,48 和 72 像素图像)而不复制图像(从而避免膨胀的 apk 大小)。

2 如果缺少一个密度引用则不起作用

众所周知,Android 不需要所有桶密度来正确显示可绘制对象 [ 1 ].例如,您可以完全省略 drawable-ldpi,它会加载并缩放其他drawable-* 文件夹中的那些,并在测试密度中的适当尺寸。事实上,许多应用程序(包括来自 Google 的应用程序)已经省略了 ldpi 并且没有人注意到。

但是,我注意到,当使用可绘制对象引用时(请参阅上面的第 1 节),此行为会发生变化。如果我省略密度文件夹中的引用 xml 文件,并尝试以该密度显示该可绘制对象,Android 将检索最高密度可绘制对象变体,但不会根据该密度调整它的大小。

让我举个例子让你更清楚:如果使用引用的可绘制对象,我省略了 values-ldpi/refs.xml,Android 将从 values-xxhdpi< 检索可绘制对象(我为这个任意可绘制对象提供的最高值)并以与 xxhdpi 对应的大小显示它,而不是 ldpi,因为它应该。因此,在 ldpi 设备中显示的任何布局都将具有巨大的图像。见下图:

A) 即使缺少 LDPI 可绘制对象,普通可绘制对象也能正常工作:

enter image description here enter image description here enter image description here

A) 如果缺少一个密度引用,引用的可绘制对象将不起作用(我没有在 values-ldpi/refs.xml 中提供明确的变体):

enter image description here enter image description here enter image description here

最佳答案

没关系,我现在在 ldpi 模拟器中进行了测试,它可以正常工作。因此,这是仅影响 IDE 中的布局预览 Pane 的错误之一。

是的,我应该在询问之前在 ldpi 模拟器中进行测试。 :)

关于android - 如果使用可绘制对象引用,可绘制对象不会因缺少密度桶而缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25613487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com