【发布时间】:2020-04-10 23:21:42
【问题描述】:
设置TextView 的颜色最有效的方法是什么?为什么?是否有 1 种内存和/或处理器效率更高的方法?或者我的应用程序在运行时发生的情况完全没有区别?每次设置颜色时引用颜色资源比声明 RGB 更好吗?
选项 1(使用 RGB 通道)
myTextView.setTextColor(Color.rgb(154,160,166))
选项 2(使用颜色解析器)
myTextView.setTextColor(Color.parseColor("#2B3A11"))
选项 3(使用来自 colors.xml 的颜色资源)
myTextView.setTextColor(ContextCompat.getColor(context, R.color.<name_of_colour>))
【问题讨论】:
-
在我看来,选项 1 是最有效的,因为创建非常清晰,并且通过定义三个精确值快速完成。选项 2 和 3 需要额外的计算步骤。 2:需要解析一个字符串,3:必须从资源文件中读取->每次读取的文件。
-
这些方法中哪个更快有关系吗?无论哪种方法更快,都会小到你甚至很难测量它的一小部分。您应该问“哪个更具可读性和可维护性”的问题。答案是第三个。
-
选项 4 - 将常量保存为常量,例如
static final Color MY_COLOR = Color.parseColor("#2B3A11");并使用myTextView.setTextColor(MY_COLOR);(然后您可以摊销成本,并使用您认为最容易阅读的任何一个来设置MY_COLOR)。 -
如果您的屏幕上有足够多的浏览量以使这些浏览量在速度上有任何可衡量的差异,那么您需要解决更大的问题。
标签: java android kotlin android-color