2014-03-19 23 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

我更新我的答案 –