Autore Topic: Funzionamento TranslateAnimation  (Letto 305 volte)

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
Funzionamento TranslateAnimation
« il: 08 Giugno 2014, 23:27:06 CEST »
0
In un'activity ho una ImageView. Vorrai aggiungere un'animazione che mi porti il centro dell'ImageView (è un quadrato) da un punto A a un punto B dell'activity.
Non conosco direttamente le coordinate di A e B ma conosco le coordinate di un punto C, le distanze CA e CB e gli angoli OCA e OCB.

Qualcuno può darmi una mano a stabilire i parametri di TranslateAnimation? perchè sto diventando matto, grazie.

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Funzionamento TranslateAnimation
« Risposta #1 il: 09 Giugno 2014, 11:04:46 CEST »
0
Mai usato TranslateAnimation, ma le coordinate di A e B si possono ricavare:

ThetaA = OCA - atan2(Cx, Cy);
ThetaB = OCB - atan2(Cx, Cy);

Ax = Cx - CA*cos(ThetaA)
Ay = Cy - CA*sin(ThetaA)
Bx = Cx - CB*cos(ThetaB)
By = Cy - CB*sin(ThetaB)

Ciao

P.S. Potrei aver sbagliato qualche segno :)
P.P.S. Ricordati di considerere il caso particolare Cx e Cy = 0
« Ultima modifica: 09 Giugno 2014, 14:15:43 CEST da arlabs »

Offline array81

  • Utente junior
  • **
  • Post: 64
  • Respect: 0
    • Mostra profilo
    • MartinZone
  • Dispositivo Android:
    OnePlus One, Nexus S
  • Play Store ID:
    MartinZone
  • Sistema operativo:
    Windows 7
Re:Funzionamento TranslateAnimation
« Risposta #2 il: 09 Giugno 2014, 23:06:10 CEST »
0
Credo che il mio problema sia più nell'utilizzo di TranslateAnimation che nel calcolo delle coordinate.
Posto un pezzo del mio codice:

Codice (Java): [Seleziona]
        TranslateAnimation ra = new TranslateAnimation(
                Animation.ABSOLUTE, centerXImage + fromX,
                Animation.ABSOLUTE, centerXImage + toX,
                Animation.ABSOLUTE, centerYImage - fromY,
                Animation.ABSOLUTE, centerYImage - toY);

        ra.setDuration(210);

        ra.setFillAfter(true);

        imageTarget.startAnimation(ra);

Ho controllato tramite log le coordinate passate a TranslateAnimation e credo siano corrette e comunque sono comprese entro i limite dello schermo del mio device di debug.
Mi aspetterei pertanto di vedere qualcosa, in realtà imageTarget (ImageView) sparisce dallo schermo appena eseguo l'animazione.