【发布时间】:2015-10-13 16:09:13
【问题描述】:
我有两个自定义视图组,它们为 motionevent 实现 onTouchListener。
我正在使用框架布局来显示它们。 第二个视图组的大小小于第一个。 所以第一个在后台,第二个在前台。
我想将第二个/较小视图组的项目拖到背景视图组。
问题:当将项目拖到背景视图组(i.e mAwesomePager)时,我希望ACTION_UP在第二个视图组(较小的)上触发,ACTION_MOVE在第一个视图组上触发,所以基本上@987654324 @ 在后台从较小的视图组转移到较大的视图组,MotionEvent 继续,用户不必从屏幕上拿起手指然后再放回去。
这里是一些有用的代码:
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (mRectOut == true) {
ev.setAction(MotionEvent.ACTION_UP);
mFrame.bringChildToFront(mAwesomePager);
//mAwesomePager.setClickable(true);
// Obtain MotionEvent object
long downTime = SystemClock.uptimeMillis();
long eventTime = SystemClock.uptimeMillis() + 100;
// 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_DOWN,
ev.getX(),
ev.getY(),
metaState
);
mAwesomePager.getChildAt(mAwesomePager.mLastDragged).dispatchTouchEvent(motionEvent);
}
//some more code here
}
我正在尝试通过此 ev.setAction(MotionEvent.ACTION_UP); 在前景视图中模拟触摸,现在我希望背景视图在触摸按住拖动的图像时控制触摸。
【问题讨论】:
标签: android touch-event motionevent