Autore Topic: Impostare una durata dinamica tra Transazioni fra Activity  (Letto 373 volte)

Offline morriluca

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Play
  • Sistema operativo:
    Windows xp
Impostare una durata dinamica tra Transazioni fra Activity
« il: 15 Settembre 2014, 17:31:13 CEST »
0
Ciao a tutti,
Vi porgo il mio banale ma terribile problema.
Devo poter impostare una transazione fra due Activity con durata non fissa.
Per la transazione ho visto che ovunque viene utilizzato questo codice, il quale mi funziona correttamente.
Codice: [Seleziona]
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);File fade_in.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="0.0"
   android:toAlpha="1.0"
   android:duration="2000" />

file fade_out.xml
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="1.0"
   android:toAlpha="0.0"
   android:duration="2000" />

Il mio problema è questo. Nel due file Xml il paramentro duration è fissato.
E' possible, anche utilizzando un altro metodo da quello sopra descritto, fare in modo
di settare il parametro duration tramite una funzione, per esempio "function int getDuration()" ?

Grazie in anticipo

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Impostare una durata dinamica tra Transazioni fra Activity
« Risposta #1 il: 15 Settembre 2014, 18:03:11 CEST »
0
Penso sia possibile. Definendo una AlphaAnimation in java e facendola agire sulla view del layout, subito dopo la setContentView, nella OnCreate.

Comunque tieni conto che la mia è solo un'ipotesi e non ho mai provato, ne' mai visto nessun esempio. Se ci riesci o lo trovi, postalo qua così magari serve a qualcun altro.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline morriluca

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Xperia Play
  • Sistema operativo:
    Windows xp
Re:Impostare una durata dinamica tra Transazioni fra Activity
« Risposta #2 il: 16 Settembre 2014, 09:28:28 CEST »
0
Grazie per il consiglio.
Ho provato a fare il tutto ma non funziona.
Per chi è interessato questo è il codice.
Codice: [Seleziona]
        layout = (AbsoluteLayout)findViewById(R.id.Layout);       
        Animation a = new AlphaAnimation(1.0f,0.0f);
        a.setDuration(1000);

        a.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                Intent mainIntent = new Intent(LayoutActivity.this,LayoutActivity.class);
                startActivity(mainIntent);

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                finish();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

        layout.startAnimation(a);

Il problema è che quando viene avviata l'attività startActivity(mainIntent); non si riesce a visualizzare l'effetto perchè parte subito l'activity.
Ho provato pure ad inserire l'avvio dell'attività nella funzione onAnimationEnd(), ma ciò comporta che il Layout attuale
esegue l'effetto di fade, lo schermo diventa tutto nero e poi parte la nuova attività.
Io invece vorrei ottenere un'effetto lineare. Intanto grazie mille per la dritta.