Подтверждено на двух разных устройствах.
animateClose()
вызов для уже закрытого ящика приведет к иногда оживлению выдвижного ящика. animateOpen()
вызов для уже открытого ящика всегда (?) Оживляет ящик до закрытия.
Непосредственные функции (close
и open
), кажется, работают так, как вы ожидаете.
Учитывая это, я бы предложил создать подкласс SlidingDrawer и переопределить 5 методов, которые открывают или закрывают ящик.Используя несколько логических переменных-членов, вы сможете определить реальное состояние ящика и вызвать (или не вызвать) соответствующий метод суперкласса, соответственно обновив ваше состояние.
(Возможно, также потребуется реализоватьOnDrawerXxxListener
s, чтобы сохранить ваше правильное состояние; мой ящик открывается и закрывается только программно, без использования «ручки», поэтому я не проверял это.)
Изменить, чтобы добавить: Приятная вещь оДля этого вы можете добавить isOpening()
и isClosing()
в зависимости от состояния вашего подкласса плюс существующий метод isMoving()
.