Jak zapewnić animację podczas wywoływania innej aktywności w systemie Android?
Mam dwie czynności A I B. chcę mieć animację shrink gdy Aktywność A wywołuje B i maksymalizuje animację, gdy aktywność B wywołuje A. nie potrzebuję do tego animowanych plików xml.
Kiedy wywołujemy inną aktywność w Androidzie, daje ona domyślną animację, a następnie wywołuje animację skurczową.
Chcę, aby nie wystąpiła domyślna animacja, a powinna wystąpić animacja, którą chcę.
Czy rzeczywiście możemy dać animację, gdy dzwonisz do innej aktywności?
4 answers
Od API 16 możesz dostarczyć pakiet opcji aktywności podczas wywoływania kontekstu .startActivity (Intent, Bundle) lub pokrewne metody. Jest on tworzony poprzez activityoptions builder:
Intent myIntent = new Intent(context, MyActivity.class);
ActivityOptions options =
ActivityOptions.makeCustomAnimation(context, R.anim.fade_in, R.anim.fade_out);
context.startActivity(myIntent, options.toBundle());
Nie zapomnij sprawdzić inne metody activityoptions builder i ActivityOptionsCompat Jeśli używasz biblioteki wsparcia.
API 5+:
Dla aplikacji kierujących API na poziomie 5+ jest Działalność overridePendingTransition
metoda. Animacje przychodzące i wychodzące wymagają dwóch identyfikatorów zasobów. Id 0
wyłączy animacje. Zadzwoń natychmiast po wywołaniu startActivity
.
Czyli:
startActivity(new Intent(this, MyActivity.class));
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
API 3+:
Możesz zapobiec domyślnej animacji (wsuwanej z prawej strony) za pomocą znacznika Intent.FLAG_ACTIVITY_NO_ANIMATION
.
Czyli:
Intent myIntent = new Intent(context, MyActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
context.startActivity(myIntent);
Następnie w swojej aktywności musisz po prostu określić własną animację.
To także działa dla API 1.5 (Poziom 3).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-06 13:40:39
Aby to osiągnąć, musisz użyć metody OverridePendingTransition, która znajduje się w klasie aktywności . Przykładowe animacje w przykładowym folderze res/anim apidemos. Sprawdź to. Więcej niż sprawdź demo w ApiDemos/App/Activity / animation .
Przykład:
@Override
public void onResume(){
// TODO LC: preliminary support for views transitions
this.overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-19 17:10:52
Napisał samouczek, dzięki któremu możesz animować swoją aktywność,
Enjoy:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-01 07:45:44
Jelly Bean dodaje wsparcie dla tego z Activioptions.metoda makeCustomAnimation () . Oczywiście, ponieważ jest tylko na Jelly Bean, jest prawie bezwartościowy do celów praktycznych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-30 23:14:00