Clone / an imageView when moving

1

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;
        }
    };
}
    
asked by Andy WolvesNet Compu 21.12.2018 в 16:59
source

0 answers