0

我有一个自定义视图,它的背景颜色必须每隔一两秒在两种颜色之间更改一次,例如黑色和白色。我可以使用canvas.drawARGB()invalidate()用任何颜色填充画布。但是有两种恒定颜色可以为画布着色并调用invalidate每个一两秒会降低速度。所以我想如果我有两个画布,第一个是白色的,第二个是黑色的,我改变整个画布onDraw()可能比调用 canvas.drawARGB() 更好。我的猜测是真的吗?这可能吗?

注意:我的目的是避免调用canvas.drawARGB()canvas.setBitmap()其他一些事情。

4

3 回答 3

1

如果您尝试更改背景颜色,我认为在接受的答案中提供了一种更好、更简单的方法:

v.setBackgroundColor(0xFF00FF00); // Where v is your view

或者:

v.setBackgroundColor(Color.GREEN); // Where v is your view

这应该比Canvas View用特定颜色填充然后调用更快invalidate()

于 2013-07-12T15:17:37.197 回答
0

您应该更改绘画对象的颜色并将该绘画对象传递给您的画布对象。

于 2013-07-12T13:32:02.730 回答
0

我不认为改变整个画布是可能的或明智的,因为 ondraw 方法中的画布对象已经为视图做好了准备,并且创建它的副本所需的开销可能效率低下。但是,您可以使用 setBackgroundColor 在调用 ondraw 方法之前应用颜色,请参见此处的绘图段落。我认为这是正确的方法,因为您让 android 做后台,假设它将使用最快和更有效的方法。

希望这可以帮助...

于 2013-07-12T11:26:12.400 回答