首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当从另一个视图拖动时,如何检测视图已被触摸

当从另一个视图拖动时,如何检测视图已被触摸
EN

Stack Overflow用户
提问于 2015-09-07 23:57:33
回答 1查看 822关注 0票数 0

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

如果我有多个视图,我按一个并继续拖动我的手指在多个其他视图上,是否有一种方法可以通知其他视图它们已经被触摸了?它将不仅仅是两个视图,它可能是多个视图。我点击一个,继续拖动我的手指,并浏览多个其他视图。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-26 23:23:56

我无法通过实际的自定义视图找到这样的方法,只能返回一层。

视图的位置记录在包含每个视图的FrameLayout上。

在FrameLayout中,我最终覆盖了onTouchEvent

最后我不得不做一些类似的事情:

代码语言:javascript
运行
复制
@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被调用,您就可以使用这样的事实:视图被标记为知道哪些视图被访问。如果需要的话,您也可以通过在数组中标记视图来获得顺序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32447390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档