一、需求:
下载完apk并安装后,希望能不用人为操作就实现特定位置的点击跟滑动。
这个需求要实现有几种方法,下面讲讲尝试过的使用MotionEvent去模拟用户手指点击跟滑动屏幕事件的实现。
**
二、思路:
**
主要用到的是onTouch常用的4个事件:
1、ACTION_DOWN:
表示按下了屏幕,第一个执行也是必然执行的方法。
2、ACTION_MOVE:
表示为移动手势,会不断的执行直到触摸停止。
3、ACTION_UP :
表示为离开屏幕,触摸停止的时候执行。
4、ACTION_CANCEL:
表示取消手势,不会由用户产生,而是由程序产生的。
一个Action_DOWN, 多个ACTION_MOVE, 1个ACTION_UP,就构成了Android中众多的事件。
思路挺简单的:
1.获得事件对象MotionEvent
MotionEvent eventUp = MotionEvent.obtain(System.currentTimeMillis(),
System.currentTimeMillis() + 100, MotionEvent.ACTION_UP, x, y, 0);
2.分发该事件对象
activity.dispatchTouchEvent(eventUp);
三、代码实现:
封装成工具类如下,传入参数就能直接使用:
/**
* 模拟点击屏幕、滑动屏幕等操作
* Created by Jim斌 on 2017/9/9.
*/
public class TouchEvent {
/**
* 模仿手指点击控件事件
* @param view 控件
* @param x 相对控件的X坐标
* @param y 相对控件的Y坐标
*/
private static void simulateClick(View view, float x, float y) {
long downTime = SystemClock.uptimeMillis();
final MotionEvent downEvent = MotionEvent.obtain(downTime, downTime,MotionEvent.ACTION_DOWN, x, y, 0);
downTime +=