android - overlay表示しているViewでACTION_OUTSIDE後にACTION_MOVEを取得したい
Androidでoverlay表示をしているViewで下の通常のレイヤーにタッチイベントを伝播させつつ、ACTION_MOVE
などのイベントを補足したいのですが、現状FLAG_WATCH_OUTSIDE_TOUCH
を利用することで、ACTION_OUTSIDE
は捕捉できています。
以前の質問からの試行錯誤中です。
LayoutInflater layoutInflater = LayoutInflater.from(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
mView = layoutInflater.inflate( R.layout.service_overlay, null);
mWm = (WindowManager) getSystemService( Context.WINDOW_SERVICE );
mWm.addView(mView, params);
mView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d( TAG, "onTouch; act: " + event.getAction());
return true;
}
});
servive_overlay.xmlは、次のように空のRelatveLayout
のみです。
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#80FF8080">
</RelativeLayout>
ACTION_OUTSIDE
を補足後、ACTION_MOVE
を補足したいのですが、RelativeLayout
をカスタムビューなどに変更してonTouchEvent
やonInterceptTouchEvent
、dispatchTouchEvent
等を利用しても捕捉できません。
onInterceptTouchEvent
ではACTION_OUTSIDE
すら発生しませんでした。
ACTION_MOVE
補足中は、下のレイヤーにタッチイベントを伝えられなくても良いです。
やりたいことは、適当に設定したホットスポットでタッチを開始し、そこからジェスチャーを補足するようなイメージです。
ホットスポットが矩形ではないため、Buttonや他のViewを用いた方法は使えません。
(overlayしているViewではsetRotationやsetXなども正しく動きませんでした)
なにか良い方法はありますか?