2011-02-10 48 views
10

我們正在開發一個應用程序,我們需要從多個視圖同時捕獲MotionEvents。當我們試圖這樣做,僅適用於Android調度事件最初觸摸視圖,同時接觸到另一個視圖時,它給我們的第一個視圖的ACTION_POINTER_DOWN而已,即使指針座標是它的邊界之外,另一意見中。多視圖OnTouch事件

有什麼辦法可以將事件分派到每個觸及的視圖(分別調用OnTouch)?

我們相信從父視圖手動攔截觸摸事件,然後將它們分發到每個視圖可能會奏效,但即使是這樣,它不會是什麼,我們正在努力實現實用。有更容易的方法嗎?

回答

6

觸摸事件首先被當前焦點所在的視圖捕捉到。如果您觸摸了1個視圖並進行了「消費」事件並正在處理該事件,則無論您點擊哪個位置,都會將其他事件分派到此視圖。

如果返回從touchListener假的(這樣說,是不消耗該事件)將被委派到其他意見,但在另一個單獨的點擊新的事件將被分派到其他視圖。

http://www.zdnet.com/blog/burnette/how-to-use-multi-touch-in-android-2-part-3-understanding-touch-events/1775

http://developer.android.com/guide/topics/ui/ui-events.html

+1

我有同樣的問題,即,如果我觸摸在屏幕任意位置上離開了細緻地查看移動,你能幫助我嗎? – 2012-03-19 11:21:04

10

至少有Android 3.0的增加了對多視圖之間的分屏觸摸事件的支持。

當AndroidManifest <uses-sdk>定義了android:minSdkVersion="11"android:targetSdkVersion="11"時,默認啓用分割觸摸事件。對於解釋請參閱android:splitMotionEventsandroid:windowEnableSplitTouch

0

雖然這應該與Android SDK 11+自動工作,但它不適用於我的應用程序。我試圖在主視圖中捕捉觸動,加上一些視圖是主視圖的子視圖;在這種情況下,觸摸只能通過接受第一次觸摸的視圖「級別」捕獲。我重新組織了我的視圖結構,以便所有的視圖都是兄弟姐妹,現在他們正在按預期捕捉事件。