gpt4 book ai didi

java - 未检测到同时按下多个按钮

转载 作者:太空狗 更新时间:2023-10-29 13:19:58 25 4
gpt4 key购买 nike

我必须 catch 一个 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;
}
}

注意:我的手机是多点触控的,我已经检查过了。

最佳答案

在包含按钮的布局上尝试 android:splitMotionEvents="true"

说明:Android 按钮不是设计为可以同时触摸的。其中一个会消耗触摸事件,布局容器不会调用另一个按钮的 onTouch 事件。

作为替代方案,您可以创建一个自定义 View 来处理两个按钮的点击检测逻辑。

参见:Android work multitouch button

关于java - 未检测到同时按下多个按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30168270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com