2011-03-07 91 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,據我所知。