1
나는 자유로운 핸드로 낙서를하고있는 캔버스 화면이 있습니다. 내가 뭘 하려는지 사용자가 무언가를 낙서 후 손가락을 들어 올리면 ACTION_UP
이벤트가 호출됩니다. 내 요구 사항은 사용자가 낙서를 한 것을 알고, 낙서를 마친 후에 내 행동을 취할 것입니다.스레드 사이에서 MotionEvent ACTION_DOWN을 호출하는 것은 잠 들어 있습니다.
ACTION_UP
이벤트에서 이것을 달성하려면 3 초 동안 새 스레드를 만들고 있는데 스레드가 잠 들어있을 때 3 초 동안 사용자가 화면에서 다시 낙서를 시작하면 ACTION_DOWN
이벤트에 전화하기를 원합니다.
나는 이것을 할 방법이 없습니다. 코드는 아래에 언급되어 있습니다. 도와주세요.
public boolean onTouchEvent(MotionEvent event) {
float eventX = event.getX();
float eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
path.lineTo(eventX, eventY);
break;
case MotionEvent.ACTION_UP:
thread = new Thread() {
int wait = 0;
@Override
public void run() {
super.run();
while (wait < 3000) {
try {
sleep(100);
wait += 100;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
pointerUp();
} catch (Exception e) {
e.printStackTrace();
}
}
};
thread.start();
break;
default:
return false;