从另一个视图拖动时如何检测视图已被触摸
How to detect view has been touched when dragged over from another view
我在这里看到了一个类似的问题:Detect touch event on a view when dragged over from other view。但是与我想要的相比,这个问题有不同的行为。
如果我有多个视图,我按下一个然后继续将手指拖到其他多个视图上,有没有办法通知其他视图它们已被触摸?它不会只是 2 个视图,它可能是多个视图。我单击其中一个并继续拖动我的手指并浏览其他多个视图。
视图是动态创建的,并以编程方式添加到 FrameLayout 中,并通过在其周围添加边距以编程方式定位。
我找不到通过实际自定义视图执行此操作的方法,不得不返回一层。
视图的位置记录在包含每个视图的 FrameLayout 上。
在 FrameLayout 中,我最终覆盖了 onTouchEvent
。
我最终不得不做类似的事情:
@Override
public boolean onTouchEvent(MotionEvent event) {
float xCoord = event.getX();
float yCoord = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Using X and Y coordinates, find out if touch event is on top of a view.
// Mark the view as touched
return true;
case MotionEvent.ACTION_UP:
// Action required once touch released.
return true;
default:
// When dragging, the default case will be called.
// Using X and Y coordinates, figure out if finger goes over a view.
// If you don't want same behaviour when going back to previous view,
// then mark it so you can ignore it if user goes back to previous view.
}
}
一旦 case MotionEvent.ACTION_UP
被调用,您可以使用视图被标记的事实来了解哪些视图被触摸了。如果需要,您还可以通过在标记视图时将视图放入数组中来获取顺序。
我在这里看到了一个类似的问题:Detect touch event on a view when dragged over from other view。但是与我想要的相比,这个问题有不同的行为。
如果我有多个视图,我按下一个然后继续将手指拖到其他多个视图上,有没有办法通知其他视图它们已被触摸?它不会只是 2 个视图,它可能是多个视图。我单击其中一个并继续拖动我的手指并浏览其他多个视图。
视图是动态创建的,并以编程方式添加到 FrameLayout 中,并通过在其周围添加边距以编程方式定位。
我找不到通过实际自定义视图执行此操作的方法,不得不返回一层。
视图的位置记录在包含每个视图的 FrameLayout 上。
在 FrameLayout 中,我最终覆盖了 onTouchEvent
。
我最终不得不做类似的事情:
@Override
public boolean onTouchEvent(MotionEvent event) {
float xCoord = event.getX();
float yCoord = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// Using X and Y coordinates, find out if touch event is on top of a view.
// Mark the view as touched
return true;
case MotionEvent.ACTION_UP:
// Action required once touch released.
return true;
default:
// When dragging, the default case will be called.
// Using X and Y coordinates, figure out if finger goes over a view.
// If you don't want same behaviour when going back to previous view,
// then mark it so you can ignore it if user goes back to previous view.
}
}
一旦 case MotionEvent.ACTION_UP
被调用,您可以使用视图被标记的事实来了解哪些视图被触摸了。如果需要,您还可以通过在标记视图时将视图放入数组中来获取顺序。