Android - Animaciones multitouch

 
Vista:
Imágen de perfil de Violeta
Val: 36
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Animaciones multitouch

Publicado por Violeta (22 intervenciones) el 29/03/2020 11:25:35
Buenas.

Estoy intentando hacer una animación para una tarea, en la que se pide que sea multitouch y con bucle.

De momento tengo pintado el bitmap inicial y la idea es que se mueva con cada toque, ahí es donde me atasco, ya que al hacerlo mediante canvas no consigo encontrar ningún método que me lo permita.

1
2
3
4
5
6
7
8
9
10
11
12
//Dibujar muñeco
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.mihero2);
canvas.drawBitmap(bmp, 50, 1500, null);
//Si ha ocurrido un toque en la pantalla
if (hayToque) {
    synchronized (this) {
        for (Toque t : toques) {
            canvas.drawBitmap(bmp,bmpInicialx+x, 1500, null);
        }
    }
 
}

Esto lo que hace es cada vez que toco aparece OTRO muñeco que se mueve y al levantar desaparece, y no es eso lo que se quiere.
Este es mi método onTouch:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public boolean onTouch(View v, MotionEvent event) {
 
    int index;
    int x,y;
 
        // Obtener el pointer asociado con la acción
        index = MotionEventCompat.getActionIndex(event);
 
        switch(event.getActionMasked()){
            case MotionEvent.ACTION_DOWN:
            case MotionEvent.ACTION_POINTER_DOWN:
                hayToque=true;
                x = (int) MotionEventCompat.getX(event, index);
                y = (int) MotionEventCompat.getY(event, index);
                synchronized(this) {
                    toques.add(index, new Toque(index, x, y));
                }
                Log.i(Game.class.getSimpleName(),"Pulsado dedo "+index+".");
                break;
 
            case MotionEvent.ACTION_POINTER_UP:
                synchronized(this) {
                    toques.remove(index);
                }
                Log.i(Game.class.getSimpleName(),"Soltado dedo "+index+".");
                break;
 
            case MotionEvent.ACTION_UP:
                synchronized(this) {
                    toques.remove(index);
                }
                Log.i(Game.class.getSimpleName(),"Soltado dedo "+index+".ultimo.");
                hayToque=false;
                break;
        }
 
        return true;
}

Si alguien tuviese alguna idea o supiese donde puedo consultar, lo agradecería profundamente. Encuentro mucho sobre animaciones, pero nada con eventos multitouch.

Por cierto, estoy usando Android Studio.

Gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder