我希望我的片段在片段转换动画尚未完成时不会收到视图上的任何单击。只是一个简单的褪色。但当我在下一个片段逐渐消失时,立即按任何视图时,事情都会变得不稳定。
你有什么想法吗?

最佳答案

这实际上是在我自己的应用程序中使用的。这个想法很简单,它只是工作,但需要相当多的额外编码。
这个想法很简单,使用一个布尔变量来维护屏幕是否应该被锁定,我们称之为screenLocked。我实际上并不阻止单击,但让单击什么也不做。
对于那些需要时间的操作,在开始工作之前将screenLocked设置为true,并在任务完成时将其设置为false。此外,在执行任何操作之前,必须添加对screenLocked的检查。
这种方法的另一个困难是,您需要有明确的任务终点。以片段转换为例,如果弹出了backbackback,对于这种情况,没有实际的回调通知。为了处理这个问题,我会在开始片段转换之前设置另一个标志releaseOnResume,在onResume中,我会使用这个标志来检查是否应该将screenLocked设置回false。
我尝试过但没有使用的其他解决方案:
在使用我刚才提到的方法之前,我尝试过setEnabledsetClickable或任何基于ui的块,例如在顶部添加framelayout并捕获所有触摸事件。
这些方法并不坏,特别是考虑到它们易于实现。
唯一的问题是,onClick事件可以由于双击而排队,当您处理第一个onClick事件时,实际上可能会有另一个事件排队,即使您立即进行任何ui更改以阻止任何进一步的单击,也无法停止下一个onClick事件,因为它是队列已经开始了。
希望这有帮助。

10-07 19:24