我有两种观点,在这种情况下circleView1
和circleView2
。你必须同时触摸它们,以便它们移动到屏幕上的随机位置。
这就是我onClickListener
的样子:
View.OnClickListener ocl = new View.OnClickListener() {
public void onClick(View v) {
if (circleView1.isPressed() && circleView2.isPressed()) {
setCirclesRandomPosition(circleView1, circleView2);
counter++;
scoreGM2.setText(Integer.toString(counter));
startGame2.setVisibility(View.INVISIBLE);
}
if (circleView1.isPressed() && circleView2.isPressed() && counter == 1) {
timer.start();
}
}
};
circleView1.setOnClickListener(ocl);
circleView2.setOnClickListener(ocl);
执行以下代码
if (circleView1.isPressed() && circleView2.isPressed() && counter == 1) {timer.start();}
但这不是
if (circleView1.isPressed() && circleView2.isPressed()) {
setCirclesRandomPosition(circleView1, circleView2);
counter++;
scoreGM2.setText(Integer.toString(counter));
startGame2.setVisibility(View.INVISIBLE);
}
来自另一个类的“相同”代码只使用一个视图,如下所示:
neoncircle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setCircleRandomPosition(neoncircle);
counter++;
scoreGM1.setText(Integer.toString(counter));
startGame1.setVisibility(View.INVISIBLE);
if (counter == 1) {
timer.start();
}
}
});
onClickListener
和circleView1
的{{1}}看起来与一个视图不同,因为这是我找出如何让它同时支持两次点击的唯一方法。
我没有发布整个代码,因为它真的很长。但如果你需要整个代码,我会发布它。
修改
我尝试了 @matdev 的建议,但现在触摸两个视图时没有任何反应。他们就呆在那里。
这是代码
circleView2
答案 0 :(得分:0)
您应该使用OnTouchListener跟踪多次触摸,而不是OnClickListener。
以下是一个代码示例,可帮助您入门:
View.OnTouchListener otl = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int maskedAction = event.getActionMasked();
switch (maskedAction) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN: {
counter++;
if (counter == 2) {
Log.i(getClass().getName(), "onTouch() pointerCount = 2 !");
// Your code ...
//setCirclesRandomPosition(circleView1, circleView2);
//scoreGM2.setText(Integer.toString(counter));
//startGame2.setVisibility(View.INVISIBLE);
}
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
case MotionEvent.ACTION_CANCEL: {
counter--;
break;
}
}
return true;
}
};
circleView1.setOnTouchListener(otl);
circleView2.setOnTouchListener(otl);
有关在Android上处理多重触控的更多信息: http://www.vogella.com/tutorials/AndroidTouch/article.html
答案 1 :(得分:0)
您可以像以前一样调用此方法。 而不是检查两个点击监听器,最好是在点击监听器内部。
neoncircle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setCircleRandomPosition(neoncircle);
counter++;
scoreGM1.setText(Integer.toString(counter));
startGame1.setVisibility(View.INVISIBLE);
if (counter == 1) {
timer.start();
}
}
});