从另一个视图拖动时,如何检测视图

时间:2015-09-07 23:57:34

标签: android android-view

我在这里发布了一个类似的问题:Detect touch event on a view when dragged over from other view。但与我想要的相比,这个问题有不同的行为。

如果我有多个视图,我按一个并继续将我的手指拖到其他多个视图上,有没有办法让其他视图通知他们已被触摸?它不仅仅是2个视图,它可能是多个视图。我点击一个并继续拖动我的手指并浏览多个其他视图。

视图是动态制作的,并以编程方式添加到FrameLayout,并通过在其周围添加边距以编程方式定位。

1 个答案:

答案 0 :(得分:0)

我无法通过实际的自定义视图找到实现此目的的方法,并且必须返回一层。

视图的位置记录在包含每个视图的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后,您可以使用标记视图的事实来了解触摸了哪些视图。如果需要,您也可以在标记时将视图放入数组中来获取订单。