如何以编程方式触发android中的触摸事件?

use*_*104 43 android gesture-recognition touch gestures

我想触发这样的触摸事件:

首先,手指在屏幕的(0,50%)处向下触摸并滑动到屏幕的(50%,50%),然后退出(将手指从屏幕上移开)

我发现了一些这样的事情:

MotionEvent event = MotionEvent.obtain(downTime, eventTime, action, x, y, pressure, size, metaState, xPrecision, yPrecision, deviceId, edgeFlags);

onTouchEvent(event);
Run Code Online (Sandbox Code Playgroud)

但是,如何模仿上述情况?我需要创建2个活动吗?onTouchDown,onMove等....?谢谢你的帮助.

bst*_*r55 89

// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
// List of meta states found here:     developer.android.com/reference/android/view/KeyEvent.html#getMetaState()
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain(
    downTime, 
    eventTime, 
    MotionEvent.ACTION_UP, 
    x, 
    y, 
    metaState
);

// Dispatch touch event to view
view.dispatchTouchEvent(motionEvent);
Run Code Online (Sandbox Code Playgroud)

  • 我应该如何声明和初始化视图对象? (3认同)
  • 左手,右手,顶部和底部的滑动手势怎么样...使用ACTION_MOVE是可能的吗? (3认同)

Sub*_*nch 6

这是干净的版本:

public void TouchView(View view)
{
    view.DispatchTouchEvent(MotionEvent.Obtain(SystemClock.UptimeMillis(), SystemClock.UptimeMillis(), (int)MotionEventActions.Down, 0, 0, 0));
    view.DispatchTouchEvent(MotionEvent.Obtain(SystemClock.UptimeMillis(), SystemClock.UptimeMillis(), (int)MotionEventActions.Up, 0, 0, 0));
}
Run Code Online (Sandbox Code Playgroud)

PS:这是一个xamarin android解决方案,但您可以轻松地将其修改为java