2011-03-07 106 views
1

我有几个ImageViews,并且我想让onTouch事件为每个人触发,当我将手指拖过多个图像时。目前,onTouch事件只在第一个ImageView上触发(或者实际上在多个ImageView上,但只能在多点触摸屏幕时触发)。伪代码:Android为多个ImageViews触发onTouch事件

  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.d("MY_APP","View: " + v.getId()); 
       return false; 
      } 

我吠叫完全错了吗?

感谢您的任何帮助。

回答

1

我认为您需要使用移动事件而不是触摸事件,并将getX和getY与视图的位置进行比较。

 @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; 
    } 
0

是的,我有同样的问题。答案是为我的ImageViews嵌入的布局创建一个触摸监听器,然后计算X,Y位置,以知道我的View是哪一个。 OnTouchListener仅用于连接的视图。我的意思是,如果它被称为ImageView,它将不会触发,直到你开始你的动作到该ImageView,据我所知。