在某些条件下,在每次触摸时调用无效是否过多

时间:2015-01-09 16:20:30

标签: android

当使用触摸在另一个自定义视图上拖动图像时,我将自定义视图的背景颜色从绿色设置为红色。当然我正在听onTouchEvents,我正在将拖动视图的坐标与自定义视图进行比较,以查看是否存在碰撞。一旦确定了碰撞,我就设置颜色并在视图上调用invalidate。

因此每次触摸都会调用invalidate(碰撞时)。这皱眉了吗?当发生这种情况时,我觉得设备会升温,所以不确定游戏时这是否正常

由于

1 个答案:

答案 0 :(得分:2)

View#nvalidate()表示需要重新绘制View并发出绘制通行证。你可以连续50次调用它,它只会发出一次抽签通过。一旦系统重新获得对主线程的控制(或者可能稍晚取决于任何其他控制的后台操作),抽签将立即发生。

如果您使用此自定义视图制作动画,那么您开始调用许多绘制传递,因此您甚至可能不需要调用View#invalidate()而只是等待屏幕重绘。 / p>

事实上,您可以look at the source code看到invalidate()setBackground()结束时被调用。当您更改View本身可以控制的View的属性时,实际上很少需要调用它。除了View本身正在进行的绘图操作之外,还需要它。