在StateListDrawable中将android:constantSize设置为'true'的好处是什么?

3
如果您曾经为Android制作自定义按钮,则应该使用过StateList Drawable。如果您查看Android StatList Drawables文档,则会发现有一个名为“android:constantSize”的选项,它被称为如下所示:
布尔值。如果在状态更改时绘制的内部大小保持不变(大小是所有状态中的最大值),则为“true”;如果大小基于当前状态而变化,则为“false”。默认值为false。
这很好理解,如果图像在任何状态下大小都不会改变,则应将其设置为true。那么我的问题是:将此值设置为true有什么好处?是否会加快渲染速度?在后台运行时是否更有效?
本质上,将此属性设置为true会给我带来什么好处?
1个回答

3
当设置了标志位时,可绘制对象仅计算一次其大小,并将该大小用于所有对其大小的查询。如果未设置标志位,则每次查询可绘制对象的内在宽度时都会从当前可绘制对象中查询一次。

谢谢,现在我知道在我的按钮上运行是安全的。但仅缓存图像尺寸能带来多少性能优势?这很显著吗?还是我们最好一直忽略这个选项,避免潜在的错误? - Robert Massaioli
@RobertMassaioli - 我不知道这样做会带来多少好处。由于默认值为“false”,我猜测它不会对性能造成太大影响。除了缓存之外,该标志可能还会影响在显示状态更改时是否存在不必要的布局传递;这将是一个非常重要的因素,但仍然不会压倒一切。但是,我还没有足够地查看源代码,以确定这是否实际上是这种情况。 - Ted Hopp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接