如何在 android 中的特定时间内限制或禁用 [​​=10=] 事件?

How to limit or disble clicks/touch events for a specific amount of time in android?

我有一个应用程序,可以在点击时为一些视图设置动画。

然而,当动画进行时,仍然有可能启动其他点击事件,这最终会导致动画出现多个问题。我需要这样做,以便在某个动画正在进行时不会启动新动画。

假设动画在屏幕上随机播放可点击的视图。我该怎么做才能让用户在 x 时间内无法启动新的点击命令,其中 x 可以是动画的持续时间,或者具有类似结果的其他一些解决方案。

在术语方面,我什至不确定我在寻找什么。我应该研究哪些领域来操纵这样的用户输入?也欢迎任何有关该主题的好资源。

您始终可以使用标志禁用点击事件,并在动画结束后再次启用它。这不是一个完美的解决方案,但在大多数情况下它都能很好地解决问题。

例如,如果您在动画中使用 Animator,您可以这样做:

private boolean isClickEnabled = true;

...

@Override
public synchronized void onClick(View v) {
    if (isClickEnabled) {
        // We disable the click, which will be enabled again when the animation ends
        isClickEnabled = false;

        ...

        animator.addListener(new AnimatorListenerAdapter() {
            @Override
            public void onAnimationEnd(Animator animation) {
                // We enable the click again now that the animation has finished
                isClickEnabled = true;
            }
        });
        animator.start();
    }
}

这同样适用于当您使用 Animation class 时,但使用 AnimationListener 代替。

请注意,您可以使用 view.setClickable(true/false) 禁用和启用视图上的点击,而不是保存本地布尔值——这实际上取决于您的需要和实现,但基本思想保持不变。

如果您想在一段时间内阻止触摸,请尝试实施 Runnable 或 runonuithread,而不是您想要阻止的任何视图,请使用名为 view.setClickable(false) 的方法。