[問題] 模擬點擊懸浮View上的位置

看板AndroidDev作者 (NO KING)時間5年前 (2019/01/02 18:38), 5年前編輯推噓1(105)
留言6則, 3人參與, 5年前最新討論串1/1
板上的大大們您好 小弟想做一個懸浮視窗 最小化回到桌面 可以移動到特定位置 然後按下按鈕後會在該位置模擬點擊動作 會點擊到螢幕上的對應位置 現況與問題描述: 目前懸浮視窗和模擬點擊都做了可以Work 在自己的APP下按下模擬點擊可以點到特定位置 但是在最小化APP後模擬點擊的部分卻無法觸發該位置的點擊 在輸出Log後發現點擊事件有觸發 但是沒辦法傳遞到螢幕上的元件 程式碼如下: Button btn_click = dialog_control.findViewById(R.id.btn_click); btn_click.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //取得目標位置在螢幕上的座標 int[] location = new int[2]; dialog_target.getLocationOnScreen(location); //有取得正確座標, 執行模擬點擊時無法觸發畫面上的元件 simulateTouchEvent(dialog_target, location[0], location[1]); } }); 其中dialog_control是控制的View, dialog_target是懸浮的目標視窗 想要模擬點擊dialog_target位置下的元件 不知道是否是點擊方式選錯了, 或是需要特別的權限 先謝謝大大的指引了 發現少貼了simulateTouchEvent 立馬補上 private void simulateTouchEvent(View view, float x, float y) { long downTime = SystemClock.uptimeMillis(); long eventTime = SystemClock.uptimeMillis() + 100; int metaState = 0; MotionEvent motionEvent = MotionEvent.obtain(downTime, eventTime, MotionEvent.ACTION_DOWN, x, y, metaState); view.dispatchTouchEvent(motionEvent); MotionEvent upEvent = MotionEvent.obtain(downTime+1000, eventTime+1000, MotionEvent.ACTION_UP, x,y, metaState); view.dispatchTouchEvent(upEvent); } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.23.68.54 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1546425537.A.CA9.html

01/02 21:34, 5年前 , 1F
不用權限 setOnClickListener沒錯 你去看simulateTouch
01/02 21:34, 1F

01/02 21:35, 5年前 , 2F
是否執行正確
01/02 21:35, 2F

01/03 10:26, 5年前 , 3F
我來研究看看, 謝謝lonelytea大大的方向指引!
01/03 10:26, 3F
※ 編輯: RX1226 (211.23.68.54), 01/03/2019 12:07:24

01/03 12:08, 5年前 , 4F
發現現在卡在點擊事件無法傳遞到螢幕上的特定位置
01/03 12:08, 4F

01/03 19:09, 5年前 , 5F
不是在自己的 app 應該沒權限吧
01/03 19:09, 5F

01/04 10:39, 5年前 , 6F
我在研究看看, 謝謝大大們的建議
01/04 10:39, 6F
文章代碼(AID): #1SB9J1of (AndroidDev)
文章代碼(AID): #1SB9J1of (AndroidDev)