I would like to know how to clone an imageView when dragging it with your finger, I have used 10 images that are really digits from 0 to 9, when dragging with the finger it is copied and moved to a specific place , not anywhere.
This is in the MainActivity:
package com.example.rober.myapplication;
import android.graphics.PointF;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
private ImageView imgv_0;
private ImageView imgv_1;
private ImageView imgv_2;
private ImageView imgv_3;
private ImageView imgv_4;
private ImageView imgv_5;
private ImageView imgv_6;
private ImageView imgv_7;
private ImageView imgv_8;
private ImageView imgv_9;
private ImageView copia;
private ImageView imgv_uni_sumando1;
private ImageView imgv_dec_sumando1;
private ImageView imgv_uni_sumando2;
private ImageView imgv_dec_sumando2;
private int modificarX = 100;
private int modificarY = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imgv_0 = (ImageView)findViewById(R.id.imgv_0);
imgv_1 = (ImageView)findViewById(R.id.imgv_1);
imgv_2 = (ImageView)findViewById(R.id.imgv_2);
imgv_3 = (ImageView)findViewById(R.id.imgv_3);
imgv_4 = (ImageView)findViewById(R.id.imgv_4);
imgv_5 = (ImageView)findViewById(R.id.imgv_5);
imgv_6 = (ImageView)findViewById(R.id.imgv_6);
imgv_7 = (ImageView)findViewById(R.id.imgv_7);
imgv_8 = (ImageView)findViewById(R.id.imgv_8);
imgv_9 = (ImageView)findViewById(R.id.imgv_9);
imgv_uni_sumando1 = (ImageView)findViewById(R.id.imgv_uni_sumando1);
imgv_dec_sumando1 = (ImageView)findViewById(R.id.imgv_dec_sumando1);
imgv_uni_sumando2 = (ImageView)findViewById(R.id.imgv_uni_sumando2);
imgv_dec_sumando2 = (ImageView)findViewById(R.id.imgv_dec_sumando2);
imgv_0.setOnTouchListener(handlerMover);
imgv_1.setOnTouchListener(handlerMover);
imgv_2.setOnTouchListener(handlerMover);
imgv_3.setOnTouchListener(handlerMover);
imgv_4.setOnTouchListener(handlerMover);
imgv_5.setOnTouchListener(handlerMover);
imgv_6.setOnTouchListener(handlerMover);
imgv_7.setOnTouchListener(handlerMover);
imgv_8.setOnTouchListener(handlerMover);
imgv_9.setOnTouchListener(handlerMover);
int[] images = {R.drawable.num0, R.drawable.num1, R.drawable.num2, R.drawable.num3, R.drawable.num4, R.drawable.num5, R.drawable.num6, R.drawable.num7, R.drawable.num8, R.drawable.num9};
Random rand = new Random();
imgv_uni_sumando1.setImageResource(images[rand.nextInt(images.length)]);
imgv_dec_sumando1.setImageResource(images[rand.nextInt(images.length)]);
imgv_uni_sumando2.setImageResource(images[rand.nextInt(images.length)]);
imgv_dec_sumando2.setImageResource(images[rand.nextInt(images.length)]);
}
View.OnTouchListener handlerMover = new View.OnTouchListener() {
// @Override
public boolean onTouch(View v, MotionEvent event) {
PointF DownPT = new PointF();
PointF StartPT = new PointF();
int eid = event.getAction();
switch (eid)
{
case MotionEvent.ACTION_MOVE:
//Obtenemos la posicion actual del dedo
StartPT = new PointF( v.getX(), v.getY());
//Calculamos el desplazamiento
PointF mv = new PointF( event.getX() - DownPT.x, event.getY() - DownPT.y);
//Asignamos al elemento la posicion actual menos un valos que se define para
//que el elemento quede centrado con respecto a nuestro dedo.
v.setX((StartPT.x+mv.x) - modificarX);
v.setY((StartPT.y+mv.y) - modificarY);
break;
case MotionEvent.ACTION_DOWN:
//Guardamos la posicion inicial
DownPT.x = event.getX();
DownPT.y = event.getY();
break;
case MotionEvent.ACTION_UP:
//En esta parte se podran guardar en una base de datos
//la nueva posicion para que ese elemento se muestre en dicha posicion
//la proxima vez que abramos la aplicacion.
//hariamos algo asi:
// cuadrado.setPosX(v.getX());
// cuadrado.setPosY(v.getY());
break;
default:
break;
}
return true;
}
};
}