2012-02-06 9 views
3

私は、animateOpen()animateClose()、、およびanimateToggle()が同じ機能を果たしていることに気付きました。つまり、それらのいずれかが他のものを置き換えることができます。Android、SlidingDrawer

  1. animateOpen()、アニメーション開口を閉じながらアニメーションより高速である:私は気づい
    唯一の違いは、次のようにアニメーションの速度が他の1つの方法から変化することでした。
  2. animateClose()、アニメーション閉鎖開口ながらアニメーションより高速です。
  3. animateToggle(),両方の速度が等しい。

だから、私の質問は:
アム私は何かが足りませんか?または、それらのいずれかを使用する前にisOpened()をチェックするだけですか?

私の問題は、私はスライド式の引き出しが既に閉じられている場合は何のアクションもとられないことを考えて、どこかanimateClose()を書いたときに発生するが、私はそれが正確にanimateToggle()と同じように動作していることが分かったので、私はこの質問を求めています。

答えて

1

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

  • animateClose()

    はすでには時々がオープンに引き出しをアニメーション化します閉じている引き出しに呼ばれます。
  • animateOpen()が既に開かれている引き出しで呼び出されると、引き出しが常に閉じられます(?)。

即時機能(closeおよびopen)は、期待通りに機能するようです。

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

(また、正しいあなたの状態を保つためにOnDrawerXxxListener Sを実装する必要があるかもしれません;。私の引き出しのみが開かれ、「ハンドル」を使用していない、プログラムで閉じられたので、私はそれをテストしていない場合)

追加する編集:これを行うには、あなたのサブクラスの状態と既存のisMoving()メソッドに基づいてisOpening()isClosing()を追加することができます。

1

animateOpen,およびanimateToggleパブリックメソッドでは、スライドを開いたり閉じたり、アニメーションで切り替えたりできます。このメソッドは、アニメーションなしでスライダを開いたり閉じたりする、開いたクローズと比較する必要があります。アニメーションの速度は、デフォルトの実装では変更しないでください。

+0

これはどのように動作する必要があります。それはどのように振る舞うのではありません。 – benkc

関連する問題