我有一个填充整个Activity
的ImageView
。我需要能够检测到4种触摸事件:
- 长按(超过400毫秒)
- 点击
- 左滑
- 右滑
目前,我可以使用以下代码检测前两个事件:
imageView.setOnTouchListener(new View.OnTouchListener() {
private Timer timerr = new Timer();
private long LONG_PRESS_TIMEOUT = 400; // TODO: your timeout here
private boolean wasLong = false;
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(getClass().getName(), "touch event: " + event.toString());
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// HOLD DETECTED
timerr.schedule(new TimerTask() {
@Override
public void run() {
SlideShow.this.runOnUiThread(new Runnable() {
@Override
public void run() {
}, LONG_PRESS_TIMEOUT);
return true;
}
if (event.getAction() == MotionEvent.ACTION_UP) {
if (!isPaused && !wasLong) {
// CLICK DETECTED
timerr.cancel();
timerr = new Timer();
if (!wasLong) {
return false;
}
});
现在我正在尝试使用这个问题中的代码来实现向右滑动和向左滑动操作。 Android Swipe on List 但是问题在于,这仅适用于列表视图,您可以为整个列表视图实现onTouchListener
,并为列表项实现一个单独的onItemClickListener
。然而,我不知道如何将其调整为仅有一个侦听器可用的情况。