I have several ImageViews, and I want the onTouch event to fire for each of them when I drag my finger across multiple images. At present the onTouch event is only firing on
I think you need to use move event rather than touch event and compare getX and getY with the location of your views.
@Override
public boolean onTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action) {
// MotionEvent class constant signifying a finger-down event
case MotionEvent.ACTION_DOWN: {
break;
}
// MotionEvent class constant signifying a finger-drag event
case MotionEvent.ACTION_MOVE: {
X = ev.getX();
Y = ev.getY();
//compare here using a loop of your views
break;
}
// MotionEvent class constant signifying a finger-up event
case MotionEvent.ACTION_UP:
break;
}
return true;
}
Yes, I had the same problem. The answer was to create a touch listener for the layout I embed my ImageViews in and then to calculate the X, Y position to know above which of my View am I. OnTouchListener is called only for the view it is connected to. I mean if it is called for an ImageView it won't fire until you start your motion onto that ImageView, as far as I know.