2016-11-02 2 views
1

onTouchEvent() фактически occour, когда мы касаемся экрана. Но я хочу вызвать это событие вручную, не касаясь экрана. Я хочу вызвать этот метод на основе логической переменной. Я новичок в android, поэтому я не знаю точно, что это возможно или нет. Заранее спасибоКак вызвать onTouchEvent вручную в android

+0

Не могли бы вы объяснить, почему вы хотите? Возможно, будет лучший способ добиться того, что вы хотите сделать. – Abbas

+0

Вы можете создать новый 'MotionEvent', вызвав' MotionEvent.obtain() '. Но как @Abbas сказал, что может быть лучший способ сделать то, что вы хотите. –

+0

На самом деле я хочу удаленно отключить устройство Android для удаленного нажатия кнопки удаленного устройства – User

ответ

1

Сначала переопределите onTouchEventMethod в действии. то вы можете вызвать этот метод внутри любой функции, подобной этой.

public void callMethod(){ 
onTouchEvent(motionevent) 
} 
0

Может быть вам нужно что-то вроде этого

private String TAG = GestureActivity.class.getSimpleName(); 
float initialX, initialY; 


    @Override 
    public boolean onTouchEvent(MotionEvent event) { 
     //mGestureDetector.onTouchEvent(event); 

     int action = event.getActionMasked(); 

     switch (action) { 

      case MotionEvent.ACTION_DOWN: 
       initialX = event.getX(); 
       initialY = event.getY(); 

       Log.d(TAG, "Action was DOWN"); 
       break; 

      case MotionEvent.ACTION_MOVE: 
       Log.d(TAG, "Action was MOVE"); 
       break; 

      case MotionEvent.ACTION_UP: 
       float finalX = event.getX(); 
       float finalY = event.getY(); 

       Log.d(TAG, "Action was UP"); 

       if (initialX < finalX) { 
        Log.d(TAG, "Left to Right swipe performed"); 
       } 

       if (initialX > finalX) { 
        Log.d(TAG, "Right to Left swipe performed"); 
       } 

       if (initialY < finalY) { 
        Log.d(TAG, "Up to Down swipe performed"); 
       } 

       if (initialY > finalY) { 
        Log.d(TAG, "Down to Up swipe performed"); 
       } 

       break; 

      case MotionEvent.ACTION_CANCEL: 
       Log.d(TAG,"Action was CANCEL"); 
       break; 

      case MotionEvent.ACTION_OUTSIDE: 
       Log.d(TAG, "Movement occurred outside bounds of current screen element"); 
       break; 
     } 

     return super.onTouchEvent(event); 
    } 
+0

Можете ли вы сделать это, не касаясь экрана ???? – User

0

Если вы хотите только подделки Щелка/крана на View (подобно TextView) и что View имеет идентификатор, вы можете делать:

findViewById(**theId**).preformClick(); 

в качестве альтернативы, если у вас есть View как уже объект, вы можете простофиля ly call:

view.performClick();