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).overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
:)Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(), android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); startActivity(intent, bundle);
Apenas republico a resposta de oleynikd porque é simples e organizado
Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(), android.R.anim.fade_in, android.R.anim.fade_out).toBundle(); startActivity(intent, bundle);
fonte
você também pode adicionar animação em sua atividade, no método onCreate como abaixo porque overridePendingTransition não está funcionando com alguns dispositivos móveis, ou depende das configurações do dispositivo ...
View view = findViewById(android.R.id.content); Animation mLoadAnimation = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in); mLoadAnimation.setDuration(2000); view.startAnimation(mLoadAnimation);
fonte
@Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.fade_in, R.anim.fade_out); }
você também pode usar este código em seu arquivo style.xml para que não precise escrever mais nada em seu activity.java
<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <item name="android:windowAnimationStyle">@style/AppTheme.WindowTransition</item> </style> <!-- Setting window animation --> <style name="AppTheme.WindowTransition"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style>
fonte