Android、SlidingDrawer

私は、 animateOpen() animateClose()および animateToggle()が同じ機能を実行していることに気付きました。他のものと置き換えてください。
私が気づいた唯一の違いは、アニメーションの速度が次のようにメソッドごとに異なることでした。

  1. animateOpen(), the animation while opening is faster than the animation while closing.
  2. animateClose(), the animation while closing is faster than the animation while opening.
  3. animateToggle(), both speeds are equal.

ですから、私の質問は:
何か不足していますか?またはそれらのいずれかを使用する前に isOpened()をチェックするだけですか?

どこかで animateClose()を書いたときに問題が発生したため、この質問をしています。スライド式の引き出しがすでに閉じられていてもアクションは実行されませんが、 animateToggle()と同じです。

3

2 答え

2つの異なるデバイスで確認済みです。

  • animateClose() called on a drawer that is already closed will sometimes animate the drawer to opened.
  • animateOpen() called on a drawer that is already opened will always (?) animate the drawer to closed.

直接関数( close open )は期待通りに機能しているようです。

これを考えると、私はSlidingDrawerをサブクラス化し、ドロワーを開いたり閉じたりする5つのメソッドをオーバーライドすることを提案します。いくつかのメンバ変数ブール値を使用すると、ドロワの実際の状態を判断し、適切なスーパークラスメソッドを呼び出す(または呼び出さない)ことができます。

(あなたの状態を正しく保つために OnDrawerXxxListener を実装する必要があるかもしれません;私の引き出しはプログラムで開いたり閉じたりするだけで、 "ハンドル"を使わないので、テストしませんでした。

追加するために編集する:あなたのサブクラスの状態に加えて、既存の isMoving()を基に isOpening()および isClosing()メソッドを使用します。

1
追加された

animateOpen, animateclose and animateToggle public methods will make the slide open,close or toggle with animaiton respectively. The methods have to be compared with open, close which will open and close the slider without animation. The speed of animation should not change in default implementation.

1
追加された
それがどう動くべきかです。それはどのように振る舞うのではありません。
追加された 著者 benkc,