更改视图的画布?

时间:2013-07-12 11:02:15

标签: android android-canvas android-custom-view

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

注意: 我的目的是避免拨打onDraw()canvas.drawARGB()或其他一些东西。

3 个答案:

答案 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)

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