안녕하세요!
제가 지금 (ImageView) mCursorView 를 만들고 있습니다!
이 뷰의 패라메터는
mParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,//w
WindowManager.LayoutParams.WRAP_CONTENT,//h
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,//_type
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,//_flags
PixelFormat.TRANSLUCENT);//_format
입니다! 그렇기 때문에 홈 화면 위에 이 뷰를 띄우고
그 뷰를 누르는 등 터치이벤트를 주면, 그 뷰가 없는 것 처럼 홈화면이 반응하게 되는데요....
저는 여기에, 메크로 처럼
이 뷰의 위치에 dispatchTouchEvent()를 사용하여 강제로 터치이벤트를 발생하게 하려고 합니다!
다음과 같은 코드를 짰습니다!
dispatchTouch(x, y);//(x,y)에 터치이벤트 발생
private void dispatchTouch(int x, int y){
// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
downTime,
eventTime,
MotionEvent.ACTION_UP,
x,
y,
metaState
);
// Dispatch touch event to view
mCursorView.dispatchTouchEvent(motionEvent);//mParams를 갖고있는 위에서 언급된 그 뷰
}
그런데 이게 웬일! 터치 이벤트가 발생하지 않는 것이었습니다!
dispatchTouch()는 잘 실행되고 있었음에도 강제터치가 먹히지 않는것을 보니,
제 생각엔 이 뷰 패라미터 특성상 터치이벤트를 뒤로 넘기게끔 하는 것 같아서 그런것 같습니다!
그렇가면, 어떻게 해야 mCursorView뒤에 있는 홈 화면으로 dispatchTouchEvent를 실행시킬 수 있을까요??
dispatchEvent를 뷰에다 하는건 많은데, 홈 화면에다 하는건 구글링 해도 나오지 않더락구요 ㅠㅠㅠ
답변 달아주시면 정말 감사드리겠습니다!!!