参考
android MotionEvent.obtain模拟事件,自动触发
一、模拟点击事件:
mBtn1.performClick();
//模拟点击事件
//mBtn1.performClick(); 需要定义setOnClickListener事件
mBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG, "onClick: ===============>");
}
});
二、模拟长按事件
mBtn1.performLongClick();
//模拟长按事件
//mBtn1.performLongClick();需要定义setOnLongClickListener事件
mBtn1.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Log.e(TAG, "onLongClick: ===================>");
return false;
}
});
三、模拟 onTouch 事件
performTouchEventClick(mBtn1, 0, 0);
//performTouchEventClick(mBtn1, 0, 0);需要定义setOnTouchListener事件
mBtn1.setOnTouchListener(new View.OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Log.e(TAG, "onTouch: =================>ACTION_DOWN");
break;
case MotionEvent.ACTION_UP:
Log.e(TAG, "onTouch: =================>ACTION_UP");
break;
}
return false;
}
});
private void performTouchEventClick(View view, float x, float y) {
long downTime = SystemClock.uptimeMillis();
MotionEvent downEvent = MotionEvent.obtain(
downTime, downTime,
MotionEvent.ACTION_DOWN,
x, y, 0
);
downTime += 1000;
MotionEvent upEvent = MotionEvent.obtain(
downTime, downTime,
MotionEvent.ACTION_UP,
x, y, 0
);
view.dispatchTouchEvent(downEvent);
view.dispatchTouchEvent(upEvent);
downEvent.recycle();
upEvent.recycle();
}