4

私の質問は、この質問に直接言及しています。その質問に対する答えは、 を作成しViewGroup、それを 内に埋め込み、 がを介してをキャッチWindowManagerできるようにする方法を示しています。これが sを受け取ることを許可するフラグです。ただし、ドキュメントによると、このフラグはWindowManagerMotionEventonTouchEvent(MotionEvent event)WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCHViewGroupMotionEvent

...完全なダウン/ムーブ/アップ ジェスチャを受け取りません

ダウン、ムーブ、アップを含むすべてのタッチ イベントを取得できる回避策または方法があるかどうかを知りたいです。コンセプトの証明はアプリWave Launcherにあります。これは同じコンセプトを使用していますが、複数のACTION_OUTSIDEイベントを受け取ることができます。

4

2 に答える 2

3

いいえ、できません。これは設計によるものです。

Wave Launcher はこれを行いません。タッチ ジェスチャを開始する UI 要素があり、標準と同様に、すべてのタッチ イベントが最初のダウン ポイントのウィンドウに最終アップまで配信されます。

于 2011-08-17T07:43:20.267 に答える
2

これは古い質問だと思いますが、似たようなことをしようとしているときに偶然見つけました。私もこれを見つけました、うまくいけばそれは誰かに役立つでしょう:http ://www.section465.com/code_OverlayView/

オーバーレイビューを作成するには、LayoutParamsを設定するときに、タイプをTYPE_SYSTEM_OVERLAYに設定し、フラグFLAG_WATCH_OUTSIDE_TOUCHを使用する必要があります。これは問題を引き起こします。Androidのドキュメントに次のように記載されているためです。タッチイベントの完全な配列を受信するには、TYPE_SYSTEM_ALERTタイプを使用する必要がありますが、これにより、オーバーレイが画面を引き継ぎ、他の要素との相互作用を停止します。解決策は、TYPE_SYSTEM_OVERLAYとTYPE_SYSTEM_ALERTの両方を使用し、必要に応じてLayoutParamsのタイプを変更してそれらを切り替えることです。

于 2012-09-23T23:33:27.107 に答える