当使用触摸在另一个自定义视图上拖动图像时,我将自定义视图的背景颜色从绿色设置为红色。当然我正在听onTouchEvents,我正在将拖动视图的坐标与自定义视图进行比较,以查看是否存在碰撞。一旦确定了碰撞,我就设置颜色并在视图上调用invalidate。
因此每次触摸都会调用invalidate(碰撞时)。这皱眉了吗?当发生这种情况时,我觉得设备会升温,所以不确定游戏时这是否正常
由于
答案 0 :(得分:2)
View#nvalidate()
表示需要重新绘制View
并发出绘制通行证。你可以连续50次调用它,它只会发出一次抽签通过。一旦系统重新获得对主线程的控制(或者可能稍晚取决于任何其他控制的后台操作),抽签将立即发生。
如果您使用此自定义视图制作动画,那么您开始调用许多绘制传递,因此您甚至可能不需要调用View#invalidate()
而只是等待屏幕重绘。 / p>
事实上,您可以look at the source code看到invalidate()
在setBackground()
结束时被调用。当您更改View
本身可以控制的View
的属性时,实际上很少需要调用它。除了View
本身正在进行的绘图操作之外,还需要它。