如何在android中以编程方式自动执行触摸

Abh*_*kra 3 android

我想RelativeLayout在不触摸屏幕的情况下执行触摸事件,希望Toast在实际触摸或未触摸时发出消息。请抛出我已经尝试过以下操作,但它似乎不起作用

MotionEvent event = MotionEvent.obtain(downTime, eventTime, action, 
                                       x, y, pressure, size, 
                                       metaState, xPrecision, yPrecision, 
                                       deviceId, edgeFlags);
onTouchEvent(event);
Run Code Online (Sandbox Code Playgroud)

xee*_*eed 7

你不应该那样做。如果您确实想以编程方式“触摸”您的视图,则应该将 onTouch 方法中发生的任何事情包装在另一个函数中(不带 MotionEvent 参数),并在您想要触摸您的视图时调用该函数。在没有真正触摸的情况下调用 onTouch 会给你带来负面的风格点

@Override
boolean onTouch(View v, MotionEvent me) {
  return action(me.getX(),me.getY());
}

boolean action(int x, int y) {
  //do some stuff
}

void somewhereelse() {
  //Perform touch action
  action(0,0);
}
Run Code Online (Sandbox Code Playgroud)

如果您确实想“调度”触摸事件。你这样做:

View v;
v.dispatchTouchEvent(MotionEvent.obtain(0,0,MotionEvent.ACTION_DOWN, 100,100,0.5f,5,0,1,1,0,0));
Run Code Online (Sandbox Code Playgroud)

这些值非常随机。仅 deviceId=0 表示以编程方式调度 Touch。