gpt4 book ai didi

android - 在执行触摸事件时,如何检测正在经过哪个 View ?

转载 作者:太空宇宙 更新时间:2023-11-03 11:36:01 25 4
gpt4 key购买 nike

我想知道如果我将 View 从一个 ViewGroup 移动到另一个 ViewGroup 时如何检测 subview ,尤其是在执行触摸事件时。有没有一种方法可以让我知道我正在“悬停”在哪些 View 上?

我现在正在做的是,当我在我的 View 中检测到一个 ACTION_MOVE 事件时,我将它提升到顶层父级,以便它可以在整个窗口内移动和绘制(而不仅仅是在它的原始父级内部bounds ),然后我想将 View 移动到不同的 ViewGroup 并在 ACTION_UP 上将 View 附加到该 ViewGroup。

最佳答案

受 Ami 的响应启发,但发现 MotionEvent#getX()/getY() 以及 View#getTop()/等返回父 View 的坐标,我最终执行了以下操作以在屏幕坐标中操作,允许我跨 ViewGroups 工作:

        private boolean inRegion(float x, float y, View v) {
v.getLocationOnScreen(mCoordBuffer);
return mCoordBuffer[0] + v.getWidth() > x && // right edge
mCoordBuffer[1] + v.getHeight() > y && // bottom edge
mCoordBuffer[0] < x && // left edge
mCoordBuffer[1] < y; // top edge
}

在 OnTouchListener 中的用法例如:

        boolean inside = inRegion(event.getRawX(), event.getRawY(), targetView);

关于android - 在执行触摸事件时,如何检测正在经过哪个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4321056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com