看板 AndroidDev 關於我們 聯絡資訊
板上的大大們您好 小弟想做一個懸浮視窗 最小化回到桌面 可以移動到特定位置 然後按下按鈕後會在該位置模擬點擊動作 會點擊到螢幕上的對應位置 現況與問題描述: 目前懸浮視窗和模擬點擊都做了可以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
lonelytea: 不用權限 setOnClickListener沒錯 你去看simulateTouch 01/02 21:34
lonelytea: 是否執行正確 01/02 21:35
RX1226: 我來研究看看, 謝謝lonelytea大大的方向指引! 01/03 10:26
※ 編輯: RX1226 (211.23.68.54), 01/03/2019 12:07:24
RX1226: 發現現在卡在點擊事件無法傳遞到螢幕上的特定位置 01/03 12:08
beyondthe: 不是在自己的 app 應該沒權限吧 01/03 19:09
RX1226: 我在研究看看, 謝謝大大們的建議 01/04 10:39