在一定条件下,每次触摸都无效是不是太过分了



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

因此,每次触摸(发生碰撞时)都会调用无效。这是皱眉吗?发生这种情况时,我感觉设备会发热,所以不确定这在游戏方面是否正常

谢谢

View#nvalidate()表示需要重新绘制View并发出绘制传递信号。 您可以连续调用 50 次,它只会发出一次平局通过的信号。一旦系统重新获得对主线程的控制,绘制过程就会发生(或者可能稍晚一点,具体取决于任何其他控制后台操作)。

如果您使用此自定义视图对某些内容进行动画处理,那么您首先会调用许多绘制通道,因此您甚至可能不需要调用View#invalidate(),只需等待屏幕重新绘制即可。

实际上,您可以查看源代码,并看到invalidate()是在setBackground()末尾调用的。实际上,当您更改View本身控制的View的属性时,需要调用它的情况非常罕见。仅当除了View本身正在执行的操作之外,您还执行了绘制操作,才需要执行此操作。

相关内容

最新更新