免责声明:我已尝试使用类似的线程(即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
onTouch
,onTouch
中是否返回true或false也无关紧要,将它放在ACTION_DOWN
还是ACTION_UP
中并不重要,结果始终相同:子视图onTouch
被执行而父onClick
没有。
并且,如果您决定投票,请至少告诉我原因。