Vista de dos imágenes con touchevent por separado

En mi archivo xml, he declarado dos imageview y más tarde agregué una imagen en él usando el método setImageBitmap() y también aplico evento táctil por separado.

Pero aquí el problema es que no puedo mover la primera imagen cuando se agrega una segunda imagen a setImageBitmap() y solo la segunda imagen se puede mover ahora.
Gracias de antemano y perdón por el inglés.

working_bitmap = BitmapFactory.decodeFile(file_location+"cropped_image.jpg");  
outBitmap=Bitmap.createBitmap(
working_bitmap.getWidth(),
working_bitmap.getHeight(),Bitmap.Config.ARGB_8888);    
Canvas canvas1 = new Canvas(outBitmap);
canvas1.drawBitmap(working_bitmap, new Matrix(), null);
if(downloaded_shirt_image != null)
{
    int width = downloaded_shirt_image.getWidth();
    int height = downloaded_shirt_image.getHeight();
    int halfWidth = width/3;
    int halfHeight = height/3;
    //Half Scaled
    Bitmap bmHalf = Bitmap.createScaledBitmap(downloaded_shirt_image,
        halfWidth, halfHeight, false);
    proimg =(ImageView)findViewById(R.id.pro_img);
    proimg.setDrawingCacheEnabled(true);
    proimg.setImageBitmap(bmHalf);
    proimg.setVisibility(View.VISIBLE);
    proimg.setOnTouchListener(new View.OnTouchListener()
    {
      public boolean onTouch(View v, MotionEvent event) {
      ImageView view = (ImageView) v;
      int rotation = 25;
     //Dump touch event to log
      dumpEvent(event);
     //Handle touch events here...
      switch (event.getAction() & MotionEvent.ACTION_MASK) {
      case MotionEvent.ACTION_DOWN:
        savedMatrix.set(matrix);
        start.set(event.getX(), event.getY());
        Log.d(TAG, "mode=DRAG");
        mode = DRAG;
        proimg.invalidate();
        break;
      case MotionEvent.ACTION_MOVE:
        if (mode == DRAG) { 
// ...
                                                                                           matrix.set(savedMatrix);                                                            
        matrix.postTranslate(event.getX() - start.x,
        event.getY() - start.y);
       }
      else if (mode == ZOOM) {
         float newDist = spacing(event);
         Log.d(TAG, "newDist=" + newDist);
        if (newDist > 10f) {
        matrix.set(savedMatrix);
        float scale = newDist/oldDist;
        matrix.postScale(scale, scale, mid.x, mid.y);
        }
     }
    proimg.invalidate();
    break;
 }
      view.setImageMatrix(matrix);
    return true;//indicate event was handled
  }
 });
  canvas1.drawBitmap(downloaded_shirt_image, 50, 192, null);
 }

 if(downloaded_pant_image != null)
 {
  int width = downloaded_pant_image.getWidth();
  int height = downloaded_pant_image.getHeight();
  int halfWidth = width/3;
  int halfHeight = height/3;
  //Half Scaled
  Bitmap bmHalf = Bitmap.createScaledBitmap(downloaded_pant_image,
                  halfWidth, halfHeight, false);
  pantimg =(ImageView)findViewById(R.id.pro_img_down);
  pantimg.setDrawingCacheEnabled(true);
  pantimg.setImageBitmap(bmHalf);
  pantimg.setVisibility(View.VISIBLE);
  pantimg.setOnTouchListener(new View.OnTouchListener()
  {
   public boolean onTouch(View v, MotionEvent event) {
   ImageView view = (ImageView) v;
   int rotation = 25;
  //Dump touch event to log
   dumpEvent(event);
 //Handle touch events here...
  switch (event.getAction() & MotionEvent.ACTION_MASK) {
  case MotionEvent.ACTION_DOWN:
  savedMatrix.set(matrix);
  start.set(event.getX(), event.getY());
  Log.d(TAG, "mode=DRAG");
  mode = DRAG;
  pantimg.invalidate();
  break;
 case MotionEvent.ACTION_MOVE:
  if (mode == DRAG) {
 //...

 matrix.set(savedMatrix);                                              matrix.postTranslate(event.getX() - start.x,
 event.getY() - start.y);
 }
else if (mode == ZOOM) {
float newDist = spacing(event);
Log.d(TAG, "newDist=" + newDist);
if (newDist > 10f) {
matrix.set(savedMatrix);
float scale = newDist/oldDist;
matrix.postScale(scale, scale, mid.x, mid.y);
}
}
pantimg.invalidate();
break;
}
view.setImageMatrix(matrix);
return true;//indicate event was handled
}
}                            
);
canvas1.drawBitmap(downloaded_pant_image, 110, 565, null);
}
0
He publicado mi código de referencia.
agregado el autor Rohit13, fuente
publique su código para que sepamos dónde va mal
agregado el autor Andro Selva, fuente
También sería bueno tener algunos métodos/clases en lugar de un gran montón.
agregado el autor MikeIsrael, fuente
Hola, lamentablemente tu código es casi ilegible. ¿Qué tal un poco más de formato?
agregado el autor Tim, fuente

1 Respuestas

Por favor, vea la respuesta y los comentarios del siguiente enlace también, puede ayudarlo.

Drag & Drop Two Images

1
agregado