Android 模拟滑动 MotionEvent touch事件
16lz
2021-01-23
模拟android里touch事件的滑动,适用于recyclerview等。
通过发送MotionEvent来模拟touch事件,配合ValueAnimator控制滑动的时间,也可以加入差值器等,之所以使用ValueAnimator,是因为一开始在测试的时候,发现给motion event设置downtime和eventtime根本没有起效,这两个time并不是用来控制event触发的时间,而是要用animator持续发出event才行。
ValueAnimator anim = ValueAnimator.ofInt(400, 250); anim.setDuration(800); final MotionEvent event = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 400, 500, 0); view.dispatchTouchEvent(event); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { int x = (int) animation.getAnimatedValue(); event.setLocation(x, 500); event.setAction(MotionEvent.ACTION_MOVE); view.dispatchTouchEvent(event); } }); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { event.setAction(MotionEvent.ACTION_UP); view.dispatchTouchEvent(event); event.recycle(); } }); anim.start();
更多相关文章
- Android 事件拦截/分发机制 (图解+代码)
- android设置软键盘搜索键以及监听搜索键点击事件
- Android 事件处理基于Handler 消息处理
- android事件拦截处理机制详解
- Android监听事件四种方法
- Android 事件分发详解及示例代码
- React Native嵌入到Android原生应用中、组件的生命周期、颜色、
- Android四种点击事件方法