Você pode criar seus próprios arquivos de animação .xml para Activity
aparecer um novo e desaparecer o atual Activity
:
fade_in.xml
<?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="500" />
fade_out.xml
<?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:fillAfter="true"
android:duration="500" />
Use-o em um código como este: (dentro do seu Activity
)
Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
O código acima irá desaparecer o que está ativo no momento Activity
e aumentar o recém-iniciado, Activity
resultando em uma transição suave.
ATUALIZAÇÃO : @Dan J apontou que usar as animações embutidas do Android melhora o desempenho , o que eu realmente descobri ser o caso depois de fazer alguns testes. Se você preferir trabalhar com as animações integradas, use:
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
Observe que estou fazendo referência em android.R
vez de R
acessar a id do recurso.
ATUALIZAÇÃO : agora é uma prática comum realizar transições usando a classe Transition introduzida na API de nível 19 .
overridePendingTransition(android.R.anim.fadein, android.R.anim.fadeout);
visualização desses arquivos também pode dar dicas sobre como melhorar suas animações personalizadas (por exemplo, fazendo o fade in durar mais do que o fade out).