- Presentación.
Otra manera de mover imágenes por la pantalla es utilizando la clase PinchZoomAndMove.
La puedes obtener del foro de B4A.
Aquí hay un ejemplo llamado basket.zip donde también se encuentra esa clase.
Una clase es un trozo de código que se escribe en...
Project / Add New Module / Class Module
En nuestro caso se llama PinchZoomAndMove.
Un módulo en un código que puede hacer ciertas funciones, en nuestro caso arrastrar una imagen.
____________________________
- Vamos al B4A.
- Creamos un nuevo Proyecto, por ahora vacío.
- Creamos una clase llamada PinchZoomAndMove.
Project / Add New Module / Class Module
y copiamos el código de PinchZoomAndMove, que puedes encontrar en el foro de B4A.
Vamos a modificar el código que hemos copiado...
Vamos a la parte de Case G.ACTION_UP y modificamos...
Case G.ACTION_UP
'''' Modificamos esto
LayoutChange.Tag = vTag
LayoutChange.Height = obj.Height
LayoutChange.Width = obj.Width
LayoutChange.Left = obj.Left
LayoutChange.Top = obj.Top
CallSubDelayed2(vModule,"SOLTAR",LayoutChange)
Bien, ahora vamos a la parte del código de Main. Copiamos lo mismo de la aplicación que hemos bajado de el foro de B4A.
Al final del código de Main, copiamos esta subrutina...
Sub SOLTAR (LayoutChange As LayoutData)
Log("Imagen = " & LayoutChange.Tag)
Log("Alto = " & LayoutChange.Height)
Log("Ancho = " & LayoutChange.Width)
Log("X = " & LayoutChange.Left)
Log("Y = " & LayoutChange.Top)
End Sub
En la carpeta Files del proyecto debemos tener las imágenes, que deben ser nombradas, en este caso:
avatar_0.png, avatar_1.png, avatar_2.png y avatar_3.png
Es decir, las imágenes deben tener un nombre común y luego un número comenzando por cero.
_________________________
- Comentarios.
Podemos mover las imágenes por la pantalla.
Podemos hacer un zoom con los dedos.
Se mostrará en la zona del Log, los datos de posición, número de imagen y dimensiones.
Mediante el Menú podemos hacer que la imagen no tenga permitido el zoom o el movimiento. Y volverlo a su tamaño normal.
_____________________
Movemos la imagen y la introducimos en un cuadrado.
|
El cuadrado enmarcado en rojo y fondo negro es el ImageView1.
Dimensiones 140 x 140.
Cuando arrastaramos una figura y las situamos dentro del cuadrado, saldrá el mensaje de "Dentro".
A las imágenes se le puede hacer zoom.
Podemos ver varias posibilidades en el Menú.
|
Podemos hacer una ampliación de este código que consiste en que debemos mover la imagen hacia un sitio cerrado, por ejemplo un cuadrado, cuando la imagen esté dentro del cuadrado, se mostrará el mensaje "Dentro".
Para ello debemos conocer el tamaño y posición del cuadrado (ImageView1) y de la imagen que vamos a mover.
Agregamos un Layout con un ImageView1, de imagen ponemos un cuadrado, dimensiones 140 x 140.
Ponemos este código para hacer la comparación...
If vTouchData.X > ImageView1.left AND vTouchData.X < ImageView1.left + ImageView1.width - LayoutChange.Width AND vTouchData.Y > ImageView1.top AND vTouchData.Y < ImageView1.top + ImageView1.height - LayoutChange.Height Then
ToastMessageShow("Dentro",False)
End If