我试图使用假触摸坐标x,y手动使用下面的代码进行虚假触摸。
public void update() {
View view = new View(this);
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
float x = 0.0f;
float y = 0.0f;
int metaState = 0;
MotionEvent motionEvent = MotionEvent.obtain( downTime, eventTime,
MotionEvent.ACTION_DOWN,
x,
y,
metaState
);
view.dispatchTouchEvent(motionEvent);
}
@Override
public boolean onTouchEvent(MotionEvent e) {
Log.e("S","pressed");
return true;
}
}
布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
我创建了一个动作事件并将其发送到view.dispatchTouchEvent(motionEvent)。为什么onTouchEvent()没有调用。
这不是打假电话的正确方法吗? 我看到了一些文件,其中setOnTouchListener(调用了新的View.OnTouchListener()。
我不需要执行ontouchlistener。我只需要执行onTouchEvent方法。 那么我的方式是正确的还是有任何方式以编程方式调用onTouchEvent()。