Ho un caso d'uso in cui per lo più inizio un'attività con una transizione, ma non è il caso quando lo si apre dal cassetto di navigazione.Come si può sapere se un'attività viene avviata senza transizione?
Per mantenere la transizione regolare, ho un Transition.TransitionListener
in cui faccio scattare l'aggiornamento dell'interfaccia utente al termine della transizione.
così ho qualcosa di simile:
public class SomeActivity extends Activity {
public void onCreate(Bundle savedInstanceState){
// ...
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
Transition sharedElementEnterTransition = getWindow().getSharedElementEnterTransition();
sharedElementEnterTransition.addListener(new Transition.TransitionListener() {
// ...
@Override
public void onTransitionEnd(Transition transition) {
doSomeUiUpdating();
}
});
} else { // Pre-Lollipop
doSomeUiUpdating();
}
}
}
Questo metodo funziona bene quando si avvia l'attività con l'animazione, ma come faccio a sapere se l'attività è stato avviato senza una transizione in modo che io possa chiamare doSomeUiUpdating()
?
Sono sicuro che ci deve essere un metodo semplice in Activity
, Window
, Transition
o da qualche parte che ho trascurato. Non voglio inoltrare sull'attività chiamante per impostare un pacchetto che dice se l'animazione è visualizzata o meno.
I assumerà la sua la stessa logica si dispone (se (android.os.Build.VERSION.SDK_INT> = android.os.Build.VERSION_CODES.LOLLIPOP) {doSomeUiUpdating(); ....) prima del codice devi iniziare un'attività – Tasos
e le transizioni sono state aggiunte nell'API 19 (KITKAT) quindi devi controllare prima quello non LOLLIPOP - https://www.youtube.com/watch?v=K3yMV5am-Xo – Tasos
The La cosa è che - come provo a dire nella prima riga - l'attività (anche se su Lollipop +) è più spesso iniziata con la transizione, ma non quando l'utente inizia l'attività dal cassetto di navigazione. –