ImageAnimator類
這個類非常簡單,主要有幾個方法
1)Animator,啟動壹個多幀的圖片,開始動畫顯示。這裏需要制定壹個回調函數onFrameChangedHandler,當圖片內部間隔時間達到時觸發,通常在這個回調函數中刷新界面,顯示下壹幀圖片。特別強調壹點,可能ImageAnimator內部用線呈池的定時器檢查時間間隔,所以該回調函數觸發時,不在程序的主線程中,要註意同步的問題。 2)CanAnimator方法,判斷圖片是否是動畫圖片。
3)StopAnimator方法,比較簡單,就是停止正在運行的動畫。
4)UpdateFrame方法,使該幀在當前正被動畫處理的所有圖像中前移。新幀在下壹次呈現圖像時繪制。如(1)所述onFrameChangedHandler不是在主線程中被觸發,所以利用這個事件調用UpdateFrame時壹定要考慮同步,如果在繪制圖片的同時調用UpdateFrame,或者在調用UpdateFrame時繪制圖片都會產生資源沖突的異常。所以建議UpdateFrame和繪制圖片的動作都在主線程中去執行。
最後還有壹點註意事項:動畫圖片的繪制可能會比較頻繁,由此造成閃爍,解決辦法有兩個:
1)不要調用this.Invalid()重繪整個窗口,而應該調用this.Invalid(rect)僅繪制顯示圖形的區域。
2)指定壹下窗口風格,啟動窗口的雙緩存
源碼:
/s/blog_6e110f480101dul7.html