Autore Topic: Animazioni in sequenza  (Letto 1379 volte)

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Animazioni in sequenza
« il: 07 Luglio 2011, 01:55:36 CEST »
0
Ciao,
ho provato a cercare in questa sezione ma non sono riuscito a trovare info, spero di non aver creato un doppio-topic! (è il mio primo dopo la presentazione, sarebbe il colmo XD)

Dunque, sto preparando un semplicissimo splash screen (più per provare come funzionano le animazioni che per altro :P), composto da due TexView e una ImageView.
Tutto bene lato animazione (nulla di che per carità!!) ma mi sorge un dubbio: le animazioni "in corso" bloccano il thread corrente?  Io pensavo di si, e visto che volevo far "sovrapporre" in parte le animazioni (tipo: l'animazione 3 scatta prima che l'animazione 2 finisca) ho scritto una cosa del genere:

Codice (Java): [Seleziona]
public void onCreate(Bundle icicle) {

                super.onCreate(icicle);
                setContentView(R.layout.main);
               
                Thread titleThread = new Thread()
                {
                    @Override
                    public void run()
                    {
                        titleTop = (TextView) findViewById(R.id.titleTop);
                        titleBottom = (TextView) findViewById(R.id.titleBottom);
                        animation = new AlphaAnimation(0, 1);
                        animation.setDuration(1000);  
                        animation.setFillAfter(true);
                        animation2 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -1.0f, Animation.ABSOLUTE, 0, Animation.ABSOLUTE,  0, Animation.ABSOLUTE, 0);
                        animation2.setDuration(1000);  
                        animation2.setFillAfter(true);  
                        AnimationSet animSet = new AnimationSet(false);
                        animSet.addAnimation(animation);
                        animSet.addAnimation(animation2);
                        titleTop.startAnimation(animSet);
                        titleBottom.startAnimation(animSet);
                       
                    }
                };
                titleThread.start();

      img = (ImageView) findViewById(R.id.imageView1);
                       
      animation = new AlphaAnimation(0, 1);
      animation.setDuration(2199);  
      animation.setFillAfter(true);  
                       
                        img.startAnimation(animation);

Poi mi è venuto il dubbio, perchè le due animazioni nel Thread seoparato venivano lanciate insieme O__O

Quindi ho scritto questo:

Codice (Java): [Seleziona]
public void onCreate(Bundle icicle) {

                super.onCreate(icicle);
                setContentView(R.layout.main);
               
                Thread titleThread = new Thread()
                {
                    @Override
                    public void run()
                    {
                        titleTop = (TextView) findViewById(R.id.titleTop);
                        titleBottom = (TextView) findViewById(R.id.titleBottom);
                        animation = new AlphaAnimation(0, 1);
                        animation.setDuration(1000);  
                        animation.setFillAfter(true);
                        animation2 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -1.0f, Animation.ABSOLUTE, 0, Animation.ABSOLUTE,  0, Animation.ABSOLUTE, 0);
                        animation2.setDuration(1000);  
                        animation2.setFillAfter(true);  
                        AnimationSet animSet = new AnimationSet(false);
                        animSet.addAnimation(animation);
                        animSet.addAnimation(animation2);
                        titleTop.startAnimation(animSet);
                        titleBottom.startAnimation(animSet);
                       
                        img = (ImageView) findViewById(R.id.imageView1);
                       
                        animation = new AlphaAnimation(0, 1);
                        animation.setDuration(2199);  
                        animation.setFillAfter(true);  
                       
                        img.startAnimation(animation);
                       
                    }
                };
                titleThread.start();

E vanno tutte e tre insieme! Ma è normale o mi sto flashando io secondo voi?

Grazie :)

Offline ALEX88-ANDR0!D

  • Utente normale
  • ***
  • Post: 173
  • The Special One
  • Respect: +13
    • Google+
    • droidev88
    • Mostra profilo
  • Dispositivo Android:
    HTC DESIRE HD
  • Sistema operativo:
    WINDOWS 7
Re:Animazioni in sequenza
« Risposta #1 il: 07 Luglio 2011, 03:01:42 CEST »
0
« Ultima modifica: 07 Luglio 2011, 03:10:00 CEST da ALEX88-ANDR0!D »
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Animazioni in sequenza
« Risposta #2 il: 07 Luglio 2011, 09:56:03 CEST »
0
Grazie mille per i tutorials!!

Io però mi ponevo la domanda per capire come gestire le animazioni nei casi in cui, contemporaneamente, ci siano da fare calcoli o altre operazioni...non capisco se le animazioni di questo tipo "blocchino" oppure no il thread.

Dall'esempio di sopra mi par di capire di no....ma cercavo conferma :P

Offline Zappescu

  • Utente junior
  • **
  • Post: 110
  • Respect: +7
    • Mostra profilo
    • Tic Tank Toe
  • Dispositivo Android:
    HTC Magic
  • Play Store ID:
    Zapmobilegames
  • Sistema operativo:
    Win XP
Re:Animazioni in sequenza
« Risposta #3 il: 07 Luglio 2011, 16:20:15 CEST »
0
...non capisco se le animazioni di questo tipo "blocchino" oppure no il thread.
Le animazioni partono tutte insieme, è normale. Io uso lo stesso sistema per un menu animato con pulsanti, per movimentare un po' la UI di inizio.
Penso che ad ogni start animazione parta un suo thread parallelo che disegna i vari frames. Ovviamente, se il cell è scarso, ti rallenta tutto. Proprio per questo ho dovuto ottimizzare le mie animazioni iniziali perchè si vedevano molto a scatti ed ho dovuto lavorare sui frames e la qualità delle immagini.
Zapmobilegames website
Tic Tank Toe: a new approach for a classic game

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Animazioni in sequenza
« Risposta #4 il: 07 Luglio 2011, 16:30:17 CEST »
0
Le animazioni partono tutte insieme, è normale.

Grazie mille della conferma! :)