我注意到animateOpen()animateClose()animateToggle()都在做同样的功能,这意味着它们中的任何一个都可以替代其他的。
我注意到的唯一区别是动画的速度因方法而异,如下所示:
animateOpen(),打开时的动画比关闭时的动画快。
animateClose(),关闭时的动画比打开时的动画快。
animateToggle(),两个速度相等。
所以,我的问题是:
我遗漏了什么吗?或者在使用它们之前我只需要检查一下isOpened()
我问这个问题是因为当我在某处写下animateClose()时,我的问题就出现了,我认为如果滑动抽屉已经关闭,那么就不会采取任何行动,但我发现它的行为与animateToggle()完全相同。

最佳答案

确认,在两个不同的设备上。
animateClose()调用一个已经关闭的抽屉有时会激活抽屉以打开。
animateOpen()对已打开的抽屉调用将始终(?)动画抽屉关闭。
即时函数(closeopen)似乎如您所期望的那样工作。
鉴于此,我建议将slidingdrawer子类化,并重写打开或关闭drawer的5个方法。使用几个成员变量布尔值,您应该能够确定抽屉的真实状态,并调用(或不调用)适当的超类方法,相应地更新您的状态。
(可能还需要实现OnDrawerXxxListeners以保持您的状态正确;我的抽屉仅以编程方式打开和关闭,不使用“句柄”,所以我没有测试它。)
编辑添加:这样做的好处是,您可以根据子类的状态加上现有的isOpening()方法添加isClosing()isMoving()

10-08 06:38