繁体   English   中英

Android:将onTouchEvent与自定义视图组中的自定义视图一起使用

[英]Android: using onTouchEvent with a custom view in a custom viewgroup

我有一个称为“节点”的自定义视图,该视图是名为“ NodeGrid”的自定义ViewGroup的子级。 “ NodeGrid”类更具体地扩展了RelativeLayout。

我的自定义视图类(“节点”)中有以下代码片段:

private boolean isBeingDragged = false;

@Override
public boolean onTouchEvent(MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN)
    {
        isBeingDragged = true;
    }
    else if (event.getAction() == MotionEvent.ACTION_UP)
    {
        isBeingDragged = false;
    }
    else if (event.getAction() == MotionEvent.ACTION_MOVE)
    {
        if (isBeingDragged)
        {
            float xPosition = event.getX();
            float yPosition = event.getY();

            //change the x and y position here
        }
    }

    return false;
}

问题:

在这段代码中有设置断点后,它似乎像的onTouchEvent获取调用只为MotionEvent.ACTION_DOWN情况下,而不是任何的另外两起案件(“动作”或“动作移动”)。 有人知道会导致这种情况发生的任何事情吗?

另外(可能相关):

不要紧的观点是如何加入的ViewGroup? 我注意到,除了“ addView”外,还有其他方法可以将子级添加到ViewGroup中,例如“ addFocusables”和“ addTouchables”。 现在,我只是使用“ addView”将子视图添加到ViewGroup中。

SDK文档中

onTouch()-返回一个布尔值,指示您的侦听器是否使用此事件。 重要的是,此事件可以有多个彼此跟随的动作。 因此,如果在收到按下动作事件时返回false,则表明您尚未消耗该事件,并且也对该事件的后续动作不感兴趣。 因此,不会在事件内要求您进行任何其他操作,例如手指手势或最终的上动作事件。

触发ACTION_DOWN事件时,您需要返回true,以表示您对与该事件相关的后续调用感兴趣。

高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM