为什么我不能同时执行onClick和onTouch?

时间:2016-06-11 19:52:05

标签: android onclick onclicklistener ontouchlistener ontouch

免责声明:我已尝试使用类似的线程(即How can I use OnClickListener in parent View and onTouchEvent in Child View?How can i get both OnClick and OnTouch Listeners),但我的代码仍无法正常工作。
我有一个(父)活动,其中包含(子)视图。 Activity包含所有网络代码,而view包含显示游戏状态的位图。视图执行游戏移动并绘制它们,而活动发送和接收移动。
因此,我需要在位图上侦听玩家的操作,在那里处理它们并在视图中处理后立即将我的移动发送到服务器。因此,到目前为止,我发现处理所有这些的最佳方法是使用onClickListener和onTouchListener。但是我花了4个小时才能让它工作,所以任何帮助都会受到赞赏。
我的父母onClick:

gameView.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                //gameView.performClick();
                sendMove(theGame.getLastMove());
            }
        });

我的孩子观点:

@Override
    public boolean onTouchEvent(MotionEvent event)
    {
        if(canIMove) {
            float x = event.getX();
            float y = event.getY();
            int recWidth = this.getWidth() / 7;
            int currentWidth = 0;
            switch (event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    if (x > currentWidth && x < currentWidth + recWidth)
                    {
                        //Bitmap touched
                        theGame.Move();
                        ReloadGameBoard();
                    }
                return true;
            }
        }
        return false;
    }

重要的是,我是否尝试performClick()onClick onTouchonTouch中是否返回true或false也无关紧要,将它放在ACTION_DOWN还是ACTION_UP中并不重要,结果始终相同:子视图onTouch被执行而父onClick没有。 并且,如果您决定投票,请至少告诉我原因。

0 个答案:

没有答案