【发布时间】:2023-04-02 22:10:01
【问题描述】:
将颜色定义为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 类的类的方法和构造函数。
【问题讨论】:
-
实际上调用
getResources()需要特定类的context,所以可能通过getresources().getColor()访问颜色比以YourColorClass.colorName访问颜色要重一些,但是访问时间或资源不同可以忽略不计。
标签: java android android-xml android-color