Android firing onTouch event for multiple ImageViews
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 the first ImageView (or actually on multiple ImageViews but only when multitouching the screen). Pseudo code:
for(int i=0;i<5;i++){
ImageView img=new ImageView(this);
LinearLayout.LayoutParams layoutParams=new LinearLayout.LayoutParams(width,height);
img.setImageResource(R.drawable.cell);
img.setOnTouchListener(this);
mainLayout.addView(img,layoutParams);
}
...
public boolean onTouch (View v, MotionEvent event){
Log开发者_如何学C.d("MY_APP","View: " + v.getId());
return false;
}
Am I barking up completely the wrong tree?
Thanks for any help.
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.
精彩评论