title: How can i drag and drop multiple imageviews over other imageviews android
body: <p>I am new to Android. The present code can drag and drop multiple Image Views on a single ImageView but I am not able to drop them on multiple Image Views. Kindly help as in how can I modify my code or any other existing code.</p>
  
  <p>MainActivity.java</p>
  
  <pre><code>package n.f.letters;
  
  import android.app.Activity;
  import android.graphics.Rect;
  import android.graphics.drawable.Drawable;
  import android.os.Bundle;
  import android.view.MotionEvent;
  import android.view.View;
  import android.view.View.OnTouchListener;
  import android.view.ViewGroup;
  import android.view.ViewGroup.LayoutParams;
  import android.view.Window;
  import android.view.WindowManager;
  import android.widget.ImageView;
  import android.widget.RelativeLayout;
  
  public class MainActivity extends Activity implements OnTouchListener {
      /** Called when the activity is first created. */
      private View selected_item = null;
      private int offset_x = 0;
      private int offset_y = 0;
      Boolean touchFlag=false;
      boolean dropFlag=false;
      LayoutParams imageParams;
      ImageView imageDrop,image1,image2,image3,image4;
      int crashX,crashY;
      Drawable dropDrawable,selectDrawable;
      Rect dropRect,selectRect;
      int topy,leftX,rightX,bottomY;
  
      int dropArray[]; 
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          this.requestWindowFeature(Window.FEATURE_NO_TITLE);
          this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
          setContentView(R.layout.activity_main);
          ViewGroup container = (ViewGroup) findViewById(R.id.container);
          imageDrop=(ImageView) findViewById(R.id.ImgDrop);       
          image1=(ImageView) findViewById(R.id.img1);
          image2=(ImageView) findViewById(R.id.img2);
          image3=(ImageView) findViewById(R.id.img3);
          image4=(ImageView) findViewById(R.id.img4);
          container.setOnTouchListener(new View.OnTouchListener() 
          {
              public boolean onTouch(View v, MotionEvent event) 
              {
                  if(touchFlag==true)
                  {
                    switch (event.getActionMasked()) 
                      {
                      case MotionEvent.ACTION_DOWN :
  
                           topy=imageDrop.getTop();
                           leftX=imageDrop.getLeft();
                           rightX=imageDrop.getRight();   
                           bottomY=imageDrop.getBottom();
  
                          //opRect.
                          break;
                      case MotionEvent.ACTION_MOVE:
                          crashX=(int) event.getX();
                          crashY=(int) event.getY();
  
  
                          int x = (int) event.getX() - offset_x;
                          int y = (int) event.getY()- offset_y;                                          
  
                          int w = getWindowManager().getDefaultDisplay().getWidth() - 50;
                          int h = getWindowManager().getDefaultDisplay().getHeight() - 10;
                          if (x &gt; w)
                              x = w;
                          if (y &gt; h)
                              y = h;                      
                          RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(new ViewGroup.MarginLayoutParams(  RelativeLayout.LayoutParams.WRAP_CONTENT,   RelativeLayout.LayoutParams.WRAP_CONTENT));
                          lp.setMargins(x, y, 0, 0);                  
  
                          //Drop Image Here                       
                          if(crashX &gt; leftX &amp;&amp; crashX &lt; rightX &amp;&amp; crashY &gt; topy &amp;&amp; crashY &lt; bottomY )                     
                          {                           
                              Drawable temp=selected_item.getBackground();                            
                              imageDrop.setBackgroundDrawable(temp);
                              imageDrop.bringToFront();                           
                              dropFlag=true;
                              selected_item.setVisibility(View.INVISIBLE);
                          }
                          //Drop Image Here                       
                          selected_item.setLayoutParams(lp);
                          break;  
                      case MotionEvent.ACTION_UP:
                          //                      
                          touchFlag=false;
                          if(dropFlag==true)
                          {
                              dropFlag=false;
                          }
                          else
                          {
                              selected_item.setLayoutParams(imageParams);
                          }                       
                          break;
                      default:
                          break;
                      }
                  }else
                  {
                      System.err.println("Display Else Part ::-&gt;"+touchFlag);
                  }               
                  return true;
              }
          });
  
          image1.setOnTouchListener(this);
          image2.setOnTouchListener(this);
          image3.setOnTouchListener(this);
          image4.setOnTouchListener(this);
      }
  
      public boolean onTouch(View v, MotionEvent event) 
      {   
          switch (event.getActionMasked()) 
          {
          case MotionEvent.ACTION_DOWN:
              touchFlag=true;
              offset_x = (int) event.getX();
              offset_y = (int) event.getY();
              selected_item = v;
              imageParams=v.getLayoutParams();
              break;
          case MotionEvent.ACTION_UP:
              selected_item=null;
              touchFlag=false;
              break;
          default:
              break;
          }       
          return false;
      }
  }
  </code></pre>
  
  <p>activity_main.xml</p>
  
  <pre><code>&lt;RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/container"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical" &gt;
  
  &lt;ImageView
      android:id="@+id/ImgDrop"
      android:layout_width="60dp"
      android:layout_height="60dp"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:background="#FFF123" /&gt;
  
  &lt;ImageView
      android:id="@+id/img4"
      android:layout_width="60dp"
      android:layout_height="60dp"
      android:layout_alignParentRight="true"
      android:layout_alignParentTop="true"
      android:layout_marginRight="75dp"
      android:layout_marginTop="61dp"
      android:background="@drawable/ic_launcher" /&gt;
  
  &lt;ImageView
      android:id="@+id/img3"
      android:layout_width="60dp"
      android:layout_height="60dp"
      android:layout_alignTop="@+id/img4"
      android:layout_toRightOf="@+id/ImgDrop"
      android:background="@drawable/ic_launcher" /&gt;
  
  &lt;ImageView
      android:id="@+id/img2"
      android:layout_width="60dp"
      android:layout_height="60dp"
      android:layout_alignRight="@+id/ImgDrop"
      android:layout_alignTop="@+id/img3"
      android:layout_marginRight="23dp"
      android:background="@drawable/ic_launcher" /&gt;
  
  &lt;ImageView
      android:id="@+id/img1"
      android:layout_width="60dp"
      android:layout_height="60dp"
      android:layout_alignTop="@+id/img2"
      android:layout_marginRight="40dp"
      android:layout_toLeftOf="@+id/img2"
      android:background="@drawable/ic_launcher" /&gt;
  </code></pre>
  
  <p></p>