2012-02-06 80 views
3

我注意到animateOpen(),animateClose()animateToggle()在做同樣的功能,這意味着它們中的任何一個都可以代替其他的。
,我注意到唯一的區別是,動畫的速度從一個方法如下變化到另:Android,SlidingDrawer

  1. animateOpen(),動畫而開口比動畫更快
  2. animateClose(),動畫而閉合比而開口動畫快
  3. animateToggle(),兩種速度都相等

所以,我的問題是:
我缺少的東西?或者在使用它們之前只需檢查isOpened()

我問這個問題,因爲我的問題提出時,我寫了animateClose()地方,心想如果滑動抽屜已經關閉,則沒有將採取行動,但我發現它的行爲完全一樣animateToggle()

回答

1

確認,在兩個不同的設備上。

  • animateClose()叫上一個已經關閉將有時動畫抽屜打開抽屜。
  • animateOpen()調用已打開的抽屜將始終(?)將抽屜的動畫關閉。

直接函數(closeopen)似乎按照您的預期工作。

鑑於此,我建議繼承SlidingDrawer並覆蓋打開或關閉抽屜的5種方法。使用幾個成員變量布爾值,你應該能夠確定抽屜的實際狀態,並調用(或不調用)適當的超類方法,相應地更新你的狀態。

(也可能是必要實施OnDrawerXxxListener s到保持你的狀態正確的。我的抽屜只開和關閉程序,而不是使用「處理」,所以我沒有測試)

編輯添加:這樣做的好處在於,您可以根據您的子類的狀態和現有的isMoving()方法添加isOpening()isClosing()

1

animateOpen,animatecloseanimateToggle公共方法將使幻燈片分別打開,關閉或切換動畫。方法必須與開放,關閉進行比較,這將打開和關閉沒有動畫的滑塊。默認實現中動畫的速度不應改變。

+0

這就是它應該如何表現。這不是它的行爲。 – benkc 2012-11-16 00:43:26