未检测到同时按下多个按钮
Pressing multiple buttons at same time not detected
我必须赶上一个 android 项目,无论是否按下两个按钮。我创建了一个 OnTouchListener
并实现了 onTouch()
。但是,当我同时按下两个按钮时,只会检测到第一个按下的按钮。
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.game_layout);
mShootButton = (Button) findViewById(R.id.btn_shoot);
mAccelerateButton = (Button) findViewById(R.id.btn_accelarate);
MyTouchListener touchlistener = new MyTouchListener();
MyTouchListener touchlistener2 = new MyTouchListener();
mShootButton.setOnTouchListener(touchlistener);
mAccelerateButton.setOnTouchListener(touchlistener2);
super.onCreate(savedInstanceState);
}
public class MyTouchListener implements OnTouchListener {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN && v.getId() == R.id.btn_shoot){
setmShootButtonPressed(true);
}
else if(event.getAction() == MotionEvent.ACTION_UP && v.getId() == R.id.btn_shoot){
setmShootButtonPressed(false);
}
if(event.getAction() == MotionEvent.ACTION_DOWN && v.getId() == R.id.btn_accelarate){
setmAccelerateButtonPressed(true);
}
else if(event.getAction() == MotionEvent.ACTION_UP && v.getId() == R.id.btn_accelarate){
setmAccelerateButtonPressed(false);
}
return true;
}
}
N.B.: 我的 phone 是多点触控,我检查过。
在包含按钮的布局上尝试android:splitMotionEvents="true"
。
说明:Android 按钮未设计为可同时触摸。其中一个会消费touch事件,布局容器不会调用另一个按钮的onTouch事件。
作为替代方案,您可以创建一个自定义视图来处理两个按钮的点击检测逻辑。
参见:Android work multitouch button
我必须赶上一个 android 项目,无论是否按下两个按钮。我创建了一个 OnTouchListener
并实现了 onTouch()
。但是,当我同时按下两个按钮时,只会检测到第一个按下的按钮。
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.game_layout);
mShootButton = (Button) findViewById(R.id.btn_shoot);
mAccelerateButton = (Button) findViewById(R.id.btn_accelarate);
MyTouchListener touchlistener = new MyTouchListener();
MyTouchListener touchlistener2 = new MyTouchListener();
mShootButton.setOnTouchListener(touchlistener);
mAccelerateButton.setOnTouchListener(touchlistener2);
super.onCreate(savedInstanceState);
}
public class MyTouchListener implements OnTouchListener {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN && v.getId() == R.id.btn_shoot){
setmShootButtonPressed(true);
}
else if(event.getAction() == MotionEvent.ACTION_UP && v.getId() == R.id.btn_shoot){
setmShootButtonPressed(false);
}
if(event.getAction() == MotionEvent.ACTION_DOWN && v.getId() == R.id.btn_accelarate){
setmAccelerateButtonPressed(true);
}
else if(event.getAction() == MotionEvent.ACTION_UP && v.getId() == R.id.btn_accelarate){
setmAccelerateButtonPressed(false);
}
return true;
}
}
N.B.: 我的 phone 是多点触控,我检查过。
在包含按钮的布局上尝试android:splitMotionEvents="true"
。
说明:Android 按钮未设计为可同时触摸。其中一个会消费touch事件,布局容器不会调用另一个按钮的onTouch事件。
作为替代方案,您可以创建一个自定义视图来处理两个按钮的点击检测逻辑。
参见:Android work multitouch button