2014-03-19 20 views
0

好吧,假設我一次有40個imageViews在屏幕上,我想檢查是否有任何觸摸,是否有任何方法來濃縮我的代碼,並寫一個循環爲我做?現在我的代碼看起來像只有更長的下面,因爲我有一個巨大的條件每個圖像。它使得無盡的和總體看起來的代碼。每個條件唯一不同的是索引值。在一個while循環內的Android Touch有條件嗎?

public boolean onTouch(View v, MotionEvent event) 
{ 
    switch (event.getAction()) 
    { 

     case MotionEvent.ACTION_MOVE: 

      float x = event.getRawX(); 
      float y = event.getRawY(); 


       if (x > imageViewArray[0].getX() && x < imageViewArray[0].getX() + imageViewArray[0].getWidth() && y > imageViewArray[0].getY() && y < imageViewArray[0].getY() + imageViewArray[0].getHeight()) { 

        System.out.println("imageView0 was touched"); 
       } 
       if (x > imageViewArray[1].getX() && x < imageViewArray[1].getX() + imageViewArray[1].getWidth() && y > imageViewArray[1].getY() && y < imageViewArray[1].getY() + imageViewArray[1].getHeight()) { 

        System.out.println("imageView1 was touched"); 

       } 
       if (x > imageViewArray[2].getX() && x < imageViewArray[2].getX() + imageViewArray[2].getWidth() && y > imageViewArray[2].getY() && y < imageViewArray[2].getY() + imageViewArray[2].getHeight()) { 

        System.out.println("imageView2 was touched"); 

       } 

      break; 
    } 
    return true; 
} 
+0

爲什麼'{'在您的病例陳述後? – csmckelvey

+0

我減少了我的代碼,讓我的觀點一覽無遺,留下了吶喊。 – user1277224

回答

0

試試這個。

ArrayList<ImageView> myImageViewsList = new ArrayList<ImageView>(); 
    ... 
    //Add ImageView's to list 
    ... 
    public boolean onTouch(View v, MotionEvent event) 
    { 
     ImageView touchedView; 

     for(ImageView view : myImageViewsList) { 
      Rect rect; 
      view.getDrawingRect(rect); 
      if(rect.contains((int)event.getX(),(int)event.getY())) { 
       touchedView = view; // that is a touched ImageView 
       break; 
      } 
     } 
     return true; 
    } 
+0

我得到這個消息,「方法包含(int,int)類型Rect不適用於參數(float,float)」 – user1277224

+0

我更新我的答案 –