android workspace分析

 在Workspace.Java類實現,相關方法有:
1) computeScroll():重寫了父類的computeScroll();主要功能是計算拖動的位移量、更新背景、設置要顯示的屏幕(setCurrentScreen(mCurrentScreen);)。
2) dispatchDraw():重寫了父類的dispatchDraw();主要功能是判斷抽屜是否打開、繪製指定的屏幕,可以繪製當前一屏,也可以繪製當前屏幕和下一屏幕,也可以繪製所有的屏幕,這兒的繪製指顯示屏幕上的child(例如:app、folder、Wiget)。和computeScroll()中的setCurrentScreen(mCurrentScreen);方法配合使用可以實現屏幕的拖動多少顯示多少的功能。
3) onMeasure():重寫了父類的onMeasure();主要功能是設置屏幕的顯示大小。由每個child的measure()方法設置。
4) onLayout():重寫了父類的onLayout();主要功能是設置屏幕的顯示位置。由child的layout()方法設置。
5) onInterceptTouchEvent():重寫了父類的onInterceptTouchEvent();主要功能是在onTouchEvent()方法之前處理touch事件。包括:down、up、move事件。
 用xy記錄鼠標移動時的座標值;
 mLastMotionX和mLastMotionY記錄了上次鼠標按下時的XY值,在ACTION_MOVE中賦值;
 xDiff和yDiff記錄xy與mLastMotionX、mLastMotionY差值的絕對值;
 touchSlop爲系統定義的標準值,初值爲16;
 當xDiff和yDiff大於touchSlop時就認爲界面拖動了足夠大的距離,屏幕就可以移動了;
 當onInterceptTouchEvent()返回true時進入onTouchEvent()。
6) onTouchEvent():重寫了父類的onTouchEvent();主要功能是處理onInterceptTouchEvent()返回值爲true時傳遞過來的touch事件。
發佈了34 篇原創文章 · 獲贊 47 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章