Se você não precisar usar a biblioteca de suporte, consulte a resposta de Roman .
Mas se você quiser usar a biblioteca de suporte, precisará usar a estrutura de animação antiga, conforme descrito abaixo.
Depois de consultar as respostas de Reto e blindstuff, obtive o seguinte código funcionando.
Os fragmentos aparecem deslizando da direita e deslizando para a esquerda quando a parte traseira é pressionada.
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.setCustomAnimations(R.anim.enter, R.anim.exit, R.anim.pop_enter, R.anim.pop_exit);
CustomFragment newCustomFragment = CustomFragment.newInstance();
transaction.replace(R.id.fragment_container, newCustomFragment );
transaction.addToBackStack(null);
transaction.commit();
A ordem é importante. Isso significa que você deve ligar setCustomAnimations()
antes replace()
ou a animação não terá efeito!
Em seguida, esses arquivos devem ser colocados dentro da pasta res / anim .
enter.xml :
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
exit.xml :
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
pop_enter.xml :
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="-100%"
android:toXDelta="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
pop_exit.xml :
<?xml version="1.0" encoding="utf-8"?>
<set>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="100%"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="@android:integer/config_mediumAnimTime"/>
</set>
A duração das animações pode ser alterada para qualquer um dos valores padrão como @android:integer/config_shortAnimTime
ou qualquer outro número.
Observe que, entre substituições de fragmentos, ocorre uma alteração na configuração (por exemplo, rotação) a ação de retorno não é animada. Este é um erro documentado que ainda existe na versão 20 da biblioteca de suporte.