Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Lograr efecto del ToolBar de whatsApp con Firemonkey (https://www.clubdelphi.com/foros/showthread.php?t=95265)

juank1971 30-06-2021 01:18:29

Lograr efecto del ToolBar de whatsApp con Firemonkey
 
Hola amigos , como puedo hacer el efecto de whatsApp en el toolbar de arriba con firemonkey del sydney 10.4


Es una barra doble de espacio de ancho y cuando subes con el dedo se sube y desaparece la parte de arriba hasta lamitad de la toolbar y se queda de lamitad de la barra fija, cuando bajas el dedo vuelve a aparecer la mitad de arriba.


no se si puedan ver el video que muestro auqnue no es nada nuevo es un video de el efecto del toollbar de whatsApp.


gracias
este es el link del video

https://www.dropbox.com/s/3efbzofbel...38_43.mp4?dl=0

Neftali [Germán.Estévez] 30-06-2021 09:54:00

1 Archivos Adjunto(s)
Dependerá de cómo tengas montada la aplicación que estás desarrollando.
Se me ocurren 2 formas de hacerlo, pero como digo dependerá de los componentes que tengas; Podrías hacer una prueba a ver qué tal.

1) Por un lado se me ocurre que si tienes un ScrollBox (en este caso vertical), que sería el equivalente a lo que tiene WhatsApp, podrías utilizar el desplazamiento del ScrollBox.
Puedes saber si el scrollBox se mueve hacia arriba o hacia abajo. Puedes utilizar esa información para ocultar/visualizar el panel/toolbar superior.
si a eso le añades una "FloatAnimation" para que se oculte/visualize de forma suave, puedes conseguir lo que necesitas.


NOTA: En este ejemplo he utilizado 2 botones para que se pueda probar manualmente, pero no los necesitas. Puedes activar las animaciones (una para ocultar y otra para visualizar) directamente desde los eventos del ScollBox.






El evento de cambio sería:


Código Delphi [-]
procedure TForm3.VertScrollBox1ViewportPositionChange(Sender: TObject;
  const OldViewportPosition, NewViewportPosition: TPointF;
  const ContentSizeChanged: Boolean);
begin
  Label2.Text := Format('oldPosición=%f - Newposition=%f ', [OldViewportPosition.Y, NewViewportPosition.Y]);
  if NewViewportPosition.Y > OldViewportPosition.Y then begin
    // bajar
    Button2Click(nil);
  end
  else if NewViewportPosition.Y < OldViewportPosition.Y then begin
    Button1Click(nil);
  end;
end;


Y uno de los botones (el otro sería equivalente) sería:

Código Delphi [-]
procedure TForm3.Button1Click(Sender: TObject);
begin
  if Animando or Oculto then
    Exit;
  Animando := True;
  Oculto := True;
  FloatAnimationOcultar.Start;
end;


2) Otra opción es probar con el componente de GestureManager, para detectar estas en concreto y hacer lo mismo que desde los eventos del scrollbox.
Este no lo he usado, así que no te lo puedo asegurar al 100%.

Te adjunto el ejemplo anterior.

juank1971 30-06-2021 15:11:43

jaja muchos saludos y mis respetos a ti:
Estaba esperando una respuesta tuya, cuando vi tu nombre arriba me trajo viejos recuerdos de los foros.
Siempre has estado eternamente como un caballero errante, dando vueltas por aquí, me complace verte activo y como siempre ayudando a todos, creo que sin lugar a dudas hemos envejecido visitando estos foros de Delphi.

Gracias te deseo mucha salud para ti y los tuyos, voy a probar.
Juank


La franja horaria es GMT +2. Ahora son las 05:46:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi