Android 安卓,滑动抽屉

Android 安卓,滑动抽屉,android,slidingdrawer,Android,Slidingdrawer,我注意到,animateOpen()、animateClose()和animateToggle()正在执行相同的功能,这意味着它们中的任何一个都可以替换其他功能。 我注意到的唯一区别是,动画的速度因不同方法而异,如下所示: animateOpen(),打开时的动画比关闭时的动画快 animateClose(),关闭时的动画比打开时的动画快 动画切换(),两种速度相等 所以,我的问题是: 我错过什么了吗?或者,在使用任何一个之前,我是否只需检查isOpened() 我问这个问题是因为当我在某处写a

我注意到,
animateOpen()
animateClose()
animateToggle()
正在执行相同的功能,这意味着它们中的任何一个都可以替换其他功能。
我注意到的唯一区别是,动画的速度因不同方法而异,如下所示:

  • animateOpen()
    ,打开时的动画比关闭时的动画快
  • animateClose()
    ,关闭时的动画比打开时的动画快
  • 动画切换()
    ,两种速度相等
  • 所以,我的问题是:
    我错过什么了吗?或者,在使用任何一个之前,我是否只需检查
    isOpened()


    我问这个问题是因为当我在某处写
    animateClose()
    时,我的问题出现了,我想如果滑动抽屉已经关闭,那么就不会采取任何行动,但我发现它的行为与
    animateToggle()

    animateOpen
    完全相同,
    animateclose
    animateToggle
    公共方法将分别使幻灯片打开、关闭或使用animation切换。这些方法必须与open、close进行比较,后者将在没有动画的情况下打开和关闭滑块。在默认实现中,动画的速度不应改变。

    在两个不同的设备上确认

    • 对已关闭的抽屉调用的
      animateClose()
      有时会使抽屉处于打开状态
    • 对已打开的抽屉调用的
      animateOpen()
      将始终(?)设置抽屉关闭的动画
    即时功能(
    close
    open
    )似乎如您所期望的那样工作

    鉴于此,我建议将SlidingDrawer子类化,并重写打开或关闭抽屉的5个方法。使用几个成员变量布尔,您应该能够确定抽屉的真实状态,并调用(或不调用)适当的超类方法,相应地更新您的状态

    (可能还需要实现
    OnDrawerXxxListener
    s以保持您的状态正确;我的抽屉仅以编程方式打开和关闭,不使用“句柄”,因此我没有对此进行测试。)


    编辑添加:这样做的好处是,您可以根据子类的状态加上现有的
    isMoving()
    方法添加
    isopenning()
    isClosing()

    这就是它的行为方式。这不是它的行为方式。