我在这里看到了一个类似的问题:Detect touch event on a view when dragged over from other view。但与我想要的相比,这个问题有不同的行为。
如果我有多个视图,我按一个并继续拖动我的手指在多个其他视图上,是否有一种方法可以通知其他视图它们已经被触摸了?它将不仅仅是两个视图,它可能是多个视图。我点击一个,继续拖动我的手指,并浏览多个其他视图。
视图是动态生成的,并以编程方式添加到FrameLayout中,并通过在其周围添加边距以编程方式定位视图。
发布于 2015-09-26 23:23:56
我无法通过实际的自定义视图找到这样的方法,只能返回一层。
视图的位置记录在包含每个视图的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被调用,您就可以使用这样的事实:视图被标记为知道哪些视图被访问。如果需要的话,您也可以通过在数组中标记视图来获得顺序。
https://stackoverflow.com/questions/32447390
复制相似问题