将颜色定义为 int
常量并静态访问它们,而不是在每次需要它们时从 xml
中提取它们是否存在任何缺陷?
例如,假设我定义了一个名为 AppColors
的类:
public final class AppColors {
private AppColors() { throw new AssertionError(); }
public static final int COLOR_RED_500 = 0xFFF44336;
}
并使用 AppColors.COLOR_RED_500
访问颜色,而通常的路径是 getResources().getColor(R.color.red_500)
。
除了颜色可能需要定义两次之外,一次是在 xml
中用于布局/主题,另一次是在代码中,以这种方式定义颜色的优点是不需要重复getResources()
调用以及将 Context
参数传递给未从 Context
类继承的类的方法和构造函数的需要。
最佳答案
实际上并没有一个明确的约定。
在这种情况下最重要的是
- 清晰度
- 表现
- 可扩展性
如果在您的情况下,此删除声明重复并使您的代码更清晰,而不影响性能,是的,您可以而且必须使用它。
但请注意:这不是一般规则,您必须单独分析每个案例并做出明智的决定,对于其他情况,使用 AppColors
类可能会产生重复或性能问题(如果有很多请求)而不是使用数据库表。
关于java - 在 Java 文件而不是 xml 中定义颜色常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32885002/