查看开关:如何阻止用户之间的交互?

Sim*_*mon 6 android

我使用视图切换器以类似于任务中切换的标准活动的方式在视图之间切换.例如,切换器中的当前视图可能有一个按钮,当单击该按钮时,将启动视图切换:当前视图(现已过时)滑出,并由新的当前视图替换,该视图将滑入.

动画切换只适用于一件事:我找不到正确的方法来告诉滑出视图停止处理用户事件,如触摸事件.所以会发生什么,如果做得足够快,而且不必那么快,用户可以点击多次启动视图切换的按钮,这很糟糕.一旦单击(或任何用户操作)启动了视图切换,我想在滑出视图上使其无效并忽略所有其他用户事件.

有一个干净,标准的方法吗?我已经在滑出视图上尝试了setEnabled(false),但看起来子视图中的点击侦听器仍在后续处理.我想要避免的是寻找所有事件处理程序并添加验证代码,以确保在视图实际滑出时不执行任何操作.

Mok*_*kus 17

我有类似的问题,想分享我的解决方案.我重写Activity.dispatchTouchEvent方法,注意这里.在这样做的过程中,我会在将所有触摸事件分派到其他视图之前拦截它们.

public boolean mDisplayBlocked = false;

@Override
public boolean dispatchTouchEvent(MotionEvent pEvent) {
    if (!mDisplayBlocked) {
        return super.dispatchTouchEvent(pEvent);
    }
    return mDisplayBlocked;
}
Run Code Online (Sandbox Code Playgroud)


nic*_*ild 1

在您的点击侦听器中,在启动视图切换之前,我相信您应该能够禁用侦听器。

我想其他 UI 交互仍然是可能的。也许您需要一个 masterDisable 方法,它将禁用该视图上的所有 UI 交互,您可以在进行视图切换之前调用该方法。