2015-09-05 78 views
8

http://www.piwai.info/chatheads-basics/ 通過遵循這個良好的指南,我可以製作一個聊天頭並檢測觸摸事件。
但是,如果我用第一根手指觸摸聊天頭,並嘗試用第二根手指觸摸聊天頭的其他區域(外部),則無法進行第二次觸摸。
(外部區域可以是主屏幕或其他應用程序的活動)
同樣,如果我第一次觸摸外部,並嘗試用第二根手指觸摸聊天頭,則不可能。
我試過與facebook messenger chathead進行類似的交互,它也是一樣的。Android ChatHead僅限於觸摸本身,但我需要第二個手指同時觸摸第二個觸摸區域外的區域,

我的問題是:是否可以支持第二次觸摸?
也許使用調度觸摸事件?但afaik調度僅適用於活動。
聊天頭使用服務和窗口。

任何幫助將深表感謝!

+0

請發佈您的相關代碼。 –

+0

該代碼是我發佈的鏈接,基本上我只是使用相同的代碼。 http://www.piwai.info/chatheads-basics/ – tcboy88

+0

這是一個指南......這不是你的代碼。順便說一句...爲什麼用戶想同時觸摸聊天頭和其他東西?這是一個非常糟糕的用戶體驗。 –

回答

1

如果底層視圖來自完全不同的層次結構,則無法使用手動添加到WindowManager的佈局作爲系統重疊的佈局。

一旦你開始對第一視圖中的觸摸事件,所有後續的觸摸事件將會直到所有MotionEvent s爲成品發送到同一個視圖層次結構(即ACTION_UP或發生ACTION_CANCEL)。基本上,一旦你與一個視圖相互作用,任何外部接觸都被解釋爲觸及當前層次之外的接觸,並忽略任何可能或不可能佔據相同屏幕位置的基礎視圖層次。

+0

是否可以檢查觸摸外部位置?並使用某種調度觸摸事件或注入觸摸事件發送到下面的活動?我有root並使用arom(rom確切地說是CM12.1),所以權限不是問題。 – tcboy88

+0

在這種情況下,不可能找出觸摸下方的視圖,更不用說發送觸摸了。 –

2

是的,它可能使用以下解決方法。

  • 圍繞您的聊天頭有一個透明的佈局。
  • 這 透明佈局將攔截觸摸,你可以做必要的處理 。
  • 然後,您可以通過從OnTouchEvent()返回false將此觸摸事件傳遞到層次結構/其他應用程序。

爲了讓其他應用程序處理觸摸事件,透明視窗才能被激活時,用戶已經觸摸你中央社確保用戶正計劃做一些手勢您chathead您chathead.This方式。

+0

你能提供概念驗證樣本嗎?就像如何將觸摸事件傳遞給層次結構一樣?因爲我的聊天頭位於其他應用程序之上(不是我自己的活動) – tcboy88

+0

由於聊天頭以外的視圖不在同一層次結構中,因此無法在此情況下使用。 –

+0

@ KaneO'Riley ...我的意思是將事件傳遞給系統/其他應用程序。 –

相關問題