我正在尝试识别在 Android 中触发 MotionEvent 的 UI 控件。我有一个 doubleTapDetector
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
doubleTapDetector = new GestureDetector(this, new DoubleTapDetector());
}
声明为
private class DoubleTapDetector extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onDoubleTap(MotionEvent e) {
String uiControlName = obtainUiControlName(e);
// Do something depends on uiControlName
return true;
}
private String obtainUiControlName(MotionEvent e) {
int deviceId = e.getDeviceId();
switch (deviceId) {
case R.id.button1: return "Button1";
case R.id.button2: return "Button2";
}
return null;
}
}
放置在两个按钮上
Button button1 = (Button) findViewById(R.id.button1);
outcomeButton.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
doubleTapDetector.onTouchEvent(event);
return true;
}
});
Button button2 = (Button) findViewById(R.id.button2);
outcomeButton.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
doubleTapDetector.onTouchEvent(event);
return true;
}
});
问题是deviceId 始终等于 0,我无法确定哪个按钮会触发双击事件。有没有办法在不为每个按钮实现两个不同的 doubleTapDetector 的情况下做到这一点?