Fragment animation on exit

Viewed 29

I have not seen many answers for a fragment animation on exit. What I am trying to do here is revert the animation when I go back on a fragment. For instance, I have three fragments, when I go to the next fragment it does a right slide in animation but now in my current fragment if i go back i want to revert that animation.

        int enterAnimRight = R.anim.slide_in_right;
        int enterAnimLeft = R.anim.slide_out_left;
        int exitAnimRight = R.anim.slide_in_left;
        int exitAnimLeft = R.anim.slide_out_left;
        lastFragment = 0;
        currentFragment = 0;
        //Bottom Navigation
        BottomNavigationView bottomNav = findViewById(R.id.nav_menu);
        //Item listener when one of hte items below from the nav_bar is selected
        bottomNav.setOnItemSelectedListener(item -> {
            Fragment selectedFragment = null;
            switch(item.getItemId()){
                case R.id.nav_home:
                    selectedFragment = new HomeFragment(dbHelper, db);
                    currentFragment=1;
                    break;
                case R.id.nav_list:
                    selectedFragment = new ListFragment(dbHelper, db);
                    currentFragment=2;
                    break;
                case R.id.nav_add:
                    selectedFragment = new AddFragment(dbHelper, db);
                    currentFragment=3;
                    break;
            }
           /* if(currentFragment > lastFragment){
                lastFragment = currentFragment;
            }else{
                //finish();
                overridePendingTransition(enterAnimLeft, enterAnimRight);
            }
            lastFragment=currentFragment;*/
            Log.i("current", currentFragment + " " + lastFragment );
            getSupportFragmentManager().beginTransaction().setCustomAnimations(enterAnimRight,
                                                                               enterAnimLeft,
                                                                               exitAnimLeft,
                                                                               exitAnimRight)
                                                                               .replace(R.id.fragment_container, selectedFragment)
                                                                               .addToBackStack(null)
                                                                               .commit();
            return true;
        });

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="-100%p"
        android:toXDelta="0" />
</set>

slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="100%p"
        android:toXDelta="0" />
</set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0"
        android:toXDelta="-100%p" />
</set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromXDelta="0"
        android:toXDelta="100%p" />
</set>
0 Answers
Related