2011-10-11 67 views

回答

4

ACTION_MASK用於分隔實際動作和指針標識符(例如,第一根手指,第二根手指等)getAction()中返回的值的前8位是實際操作部分,因此當您按位與 - 它與action mask(= 11111111 = 255 = 0xff),你只剩下行動和沒有指針信息。

在Android 1.5/API級別3中,我們不支持MotionEvent類中的多個指針(即多點觸控)。對於單個指針事件,指針位未設置。因此,您可以只比較與所需的行動不變的情況下,以獲得特定的動作檢查:

if ((event.getAction() == MotionEvent.ACTION_MOVE) {...} 

萬一,這是不行的,你可以嘗試定義自己的行動面具常數爲255,並按照後面的API版本與動作進行比較。

docs對於MotionEvent(或實際上任何Android參考頁面),都有一個複選框可按API級別過濾。如果您選擇API級別3,那麼您可以看到該級別的狀態。所有與不同指針相關的方法和常量都是灰色的。

+0

非常感謝您的時間和答覆。我仍然想知道,因爲這個表達式將解決在較新的Android版本爲假。這將*在任何設備/水平從3到現在工作*?如果是,是因爲我在項目創建時輸入的目標/ min_sdk信息? – unR

+1

對於單指針觸摸事件,該表達式始終有效,即使對於以後的API級別也是如此。對於單個指針,其他(指針)位未設置,因此不需要掩碼。 – antonyt

+0

非常感謝。公認 – unR

相關問題