2011-07-17 4 views
4

私の質問は直接questionを参照しています。その質問に対する答えは、ViewGroupを作成し、WindowManagerの中に埋め込み、WindowManagerMotionEventからonTouchEvent(MotionEvent event)までをキャッチできるようにする方法を示しています。 WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCHは、このViewGroupMotionEventを受信できるようにするフラグです。しかし、ドキュメンテーション、このフラグすべてのMotionEventをWindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCHで取得する

...によると、私は周りの仕事、またはそのような方法は、私があるのか​​どうかを知りたいフルダウン/移動/アップジェスチャー

を受信しませんダウン、移動、上を含むすべてのタッチイベントを取得することができます。概念の証明は同じコンセプトを使用するWave Launcherアプリにありますが、単一のACTION_OUTSIDEイベント以上を受信することができます。

+0

ここでも私は同じ問題に直面しています。 – fargath

+0

私は実際に似たようなものを持っているが、そのうちのどれも私に戻ったり、私に答えを提供してくれるアプリを持っている開発者の何人かにメールを送りました。 – Brian

+0

私は多くのグーグルで解決策を見つけることができませんでした。 – fargath

答えて

3

いいえ、あなたはできません。それは設計通りです。

ウェーブランチャーはこれを実行せず、タッチジェスチャーを開始するUIエレメントがあり、標準的なディスパッチと同様に、すべてのタッチイベントは、最終アップまでの最初のダウンポイントのウィンドウに配信されます。

+1

これは、具体的にどのように行われたか分かりますか?概念の点だけではない? – Brian

2

私はこれが古い質問であることを認識していますが、似たようなことを達成しようとしている間、私はそれを見つけました。私もこれを見つけた、うまくいけば、それが誰かに便利です:LayoutParamsを設定するときhttp://www.section465.com/code_OverlayView/

は、オーバーレイビューを作成するには、TYPE_SYSTEM_OVERLAY、フラグに FLAG_WATCH_OUTSIDE_TOUCHを使用するタイプを設定する を必要としています。 Androidドキュメントには、「 ダウン/移動/アップジェスチャは表示されません。最初の位置は ACTION_OUTSIDEとして表示されます。タッチイベントの完全な配列を受け取るには、 タイプを使用する必要がありますが、 オーバーレイが画面を引き継ぎ、他の エレメントとのやりとりを停止します。解決方法は、TYPE_SYSTEM_OVERLAYと TYPE_SYSTEM_ALERTの両方を使用し、必要に応じて LayoutParamsのタイプを変更して切り替えます。

関連する問題