Color.Transparent和Color.Unspecified之间的区别是什么?

3
什么是Jetpack Compose中Color.Transparent和Color.Unspecified之间的区别?其中一个对性能更好吗?如果我不想在我的组件上看到任何背景颜色,应该使用哪个?
OutlinedCard(colors = CardDefaults.cardColors(containerColor = Color.Transparent)) {}

或者

OutlinedCard(colors = CardDefaults.cardColors(containerColor = Color.Unspecified)) {}
3个回答

3
它们都是透明的颜色。Color.Unspecified或其他未指定的选项也适用于Size、Offset,以便使用isSpecified或isUnspecified函数进行相应实例的比较。就我记得,对于这两个比较函数,Color.Transparent和Color.Unspecified返回相同的结果。
当您希望检查用户是否输入了任何内容时,Color.Unspecified或其他选项更合适,而transparent则定义了一种颜色选择,当然这并非绝对,您可以同时使用两者。
这种区别在使用Offset.Unspecified或Size.Unspecified时尤为明显,当您不希望最初在屏幕上绘制某些东西,而是在某个位置或零大小上绘制某些东西时。

1

从官方文档

val Unspecified: Color

因为 Color 是一个内联类,这表示未设置的值而无需包装 Color。在绘制时将被视为 Transparent。颜色可以与 Unspecified 进行相等性比较,或使用 isUnspecified 来检查是否为未设置的值,使用 isSpecified 来检查是否为任何非 Unspecified 的颜色。

所以在绘制时就像Transparent一样!


0
这取决于你正在开发应用程序的对象。如果是为了一个注重稳定性和一致性而不是性能的公司,那么使用透明模式会更合适。
OutlinedCard(colors = CardDefaults.cardColors(containerColor = Color.Transparent)) {}

或者,如果您的目标是较旧的设备,请使用未指定的选项,它比透明稍微更高效。
OutlinedCard(colors = CardDefaults.cardColors(containerColor = Color.Unspecified)) {}

1
为什么/如何才能更高效? - undefined

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