我有一个自定义视图,它的背景颜色必须在两种颜色之间每隔一两秒更改一次,例如黑色和白色。我可以使用canvas.drawARGB()
和invalidate()
用任何颜色填充画布。但是有两种常量颜色,画布可以着色,每隔一两秒调用invalidate
会降低速度。所以我想如果我有两个画布,首先是白色,第二个是黑色,我在{{1它可能比调用canvas.drawARGB()更好。我的猜测是真的吗?它有可能吗?
注意:
我的目的是避免拨打onDraw()
或canvas.drawARGB()
或其他一些东西。
答案 0 :(得分:1)
如果您正在尝试更改背景颜色,我认为在接受的答案中会提供更好,更简单的方法here:
v.setBackgroundColor(0xFF00FF00); // Where v is your view
或者:
v.setBackgroundColor(Color.GREEN); // Where v is your view
这应该比使用特定颜色填充Canvas View
更快,然后拨打invalidate()
答案 1 :(得分:0)
我不认为更改整个画布是可行的或明智的,因为ondraw方法中的canvas对象已经为视图做好了准备,并且创建它的副本所需的开销可能效率低下。但是,您可以使用setBackgroundColor,它将在调用ondraw方法之前应用颜色,请参阅绘图段落here。我认为这是正确的方法,因为你让android做背景,假设它将使用最快和更有效的方法。
希望这会有所帮助......
答案 2 :(得分:0)
您应该更改绘制对象的颜色并将该绘制对象传递给画布对象。